它不起作用,因为 disabled 属性会禁用 CheckBox,无论它的值是什么。
我不确定如何在一行中做到这一点,但这是一种解决方案:
@if(Model.Disabled)
{
@Html.CheckBoxFor(m=>m.Checked, new { @disabled = "disabled"})
}
else
{
@Html.CheckBoxFor(m=>m.Checked)
}
一个潜在的 Html 助手扩展:
public static MvcHtmlString CheckBoxFor<TModel>(
this HtmlHelper<TModel> helper,
Expression<Func<TModel, bool>> expression,
object htmlAttributes,
bool isDisabled)
{
var dic = htmlAttributes.GetType()
.GetProperties()
.ToDictionary(p => p.Name, p => p.GetValue(htmlAttributes, null));
if (isDisabled)
dic["disabled"] = "disabled";
return helper.CheckBoxFor(expression, dic);
}