@epignosisx 发布的解决方案有效,但如果您想添加一些其他属性,这可能是个问题,因为您必须将它添加到两个对象(一个有disabled
,一个现在是空的)。
更糟糕的是,如果您有其他一些 bool 属性,因为您将有四个不同的对象,每个对象用于每种组合。
这里最好的解决方案(使用更多代码)是为 HtmlHelper 构建一个扩展方法,以接收您的布尔属性作为参数。
public static MvcHtmlString TextBoxDisabledFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, bool disabled, object htmlAttributes = null)
{
return TextBoxDisabledFor(htmlHelper, expression, disabled, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
}
public static MvcHtmlString TextBoxDisabledFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, bool disabled, IDictionary<string, object> htmlAttributes)
{
if (htmlAttributes == null)
htmlAttributes = new Dictionary<string, object>();
if (disabled)
htmlAttributes["disabled"] = "disabled";
return htmlHelper.TextBoxFor(expression, htmlAttributes);
}
这里还有另一个例子