我使用的是HTML帮助来创建一个复选框。 待一些条件,我想将添加disabled
属性添加到htmlAttribute对象。 我有以下代码:
@if (Model.IsAuthorized)
{
@Html.CheckBoxFor(x => @Model.Property, new { @class = "input-class" })
}
else
{
@Html.CheckBoxFor(x => @Model.Property, new { @class = "input-class", @disabled = "disabled" })
}
我想使代码更简洁。 有没有一种方法,以有条件地在一个线/添加某些HTML属性没有条件块?
虽然你可以使用
@Html.CheckBoxFor(m => m.Property, Model.IsAuthorized ? (object)new { @class = "input-class", disabled = "disabled" } : (object)new { @class = "input-class"});
要做到这一点的一行代码,你的情况可能会导致模型绑定失败。
所述CheckBoxFor()
方法生成2个输入有一个复选框value="True"
,并用一个隐藏的输入value="False"
。 在初始值的情况下Property
是true
和IsAuthorized
是true
的结果是,该复选框被禁用,将不会发布一个值。 然而,隐藏的输入将被提交并绑定到你的模型,导致Property
被false
(当它应该是true
)
为了处理模型正确结合,您将需要if
块
@if (Model.IsAuthorized)
{
@Html.CheckBoxFor(x => m.Property, new { @class = "input-class" })
}
else
{
@Html.HiddenFor(m => m.Property) // necessary to post back the initial value
<input type="checkbox" @(Model.Property ? "checked" : null) disabled />
}