Set disable attribute based on a condition for Html.TextBoxFor

后端 未结 12 1208
清酒与你
清酒与你 2020-11-28 06:13

I want to set disable attribute based on a condition for Html.TextBoxFor in asp.net MVC like below

@Html.TextBoxFor(model => model.ExpireDate, new { style         


        
12条回答
  •  不知归路
    2020-11-28 06:37

    I achieved it using some extension methods

    private const string endFieldPattern = "^(.*?)>";
    
        public static MvcHtmlString IsDisabled(this MvcHtmlString htmlString, bool disabled)
        {
            string rawString = htmlString.ToString();
            if (disabled)
            {
                rawString = Regex.Replace(rawString, endFieldPattern, "$1 disabled=\"disabled\">");
            }
    
            return new MvcHtmlString(rawString);
        }
    
        public static MvcHtmlString IsReadonly(this MvcHtmlString htmlString, bool @readonly)
        {
            string rawString = htmlString.ToString();
            if (@readonly)
            {
                rawString = Regex.Replace(rawString, endFieldPattern, "$1 readonly=\"readonly\">");
            }
    
            return new MvcHtmlString(rawString);
        }
    

    and then....

    @Html.TextBoxFor(model => model.Name, new { @class= "someclass"}).IsDisabled(Model.ExpireDate == null)
    

提交回复
热议问题