希望对你的asp.net mvc大师有一个简单的问题:
我有一个复选框,如下所示:
<%=Html.CheckBox("MyCheckBox", true, new { disabled = "disabled"})%>
在我的操作中,我像这样检查这个值:
bool isChecked = form["MyCheckBox"].Contains("true");
我希望这个返回true,因为它被检查过了。但是,创建的隐藏元素的值为false:
<input checked="checked" disabled="disabled" id="MyCheckBox" name="MyCheckBox" type="checkbox" value="true" />
<input name="MyCheckBox" type="hidden" value="false" />
首先,有没有一种方法可以让HtmlHelper的行为符合我的期望?或者手动构造输入/创建自己的帮助器方法是唯一的方法?(并不是说这是个大问题...)
第二,有没有人能解释一下为什么复选框的行为是这样的?假设一个被禁用的复选框如果==是真的,我是不是不正确?禁用状态在语义上是否意味着false?
发布于 2019-02-14 02:02:31
我不知道它是否解决了你的问题,但这就是我的解决方案:
我的模型有一个UserMigrated布尔型属性,一旦用户设置为迁移,他就不能返回,所以视图变成:
@if (Model.UserMigrated)
{
<td>@Html.CheckBox("chkBoxReadOnly", true, new {disabled = "disabled"})</td>
@Html.HiddenFor(m => m.UserMigrated)
}
else
{
<td>@Html.CheckBoxFor(m => m.UserMigrated)</td>
}
发布于 2018-09-19 06:31:33
我在尝试为复选框使用disabled时遇到了类似的问题。我的解决方案就是不显示复选框,因为用户没有修改该字段的权限。
我还确保了Html.HiddenFor在那里,这样就保留了值。
发布于 2020-12-31 02:49:35
在我的例子中,下面的场景是关于asp-tag助手的。因此,为了发送值,我使用了输入隐藏字段,它起作用了。
<input type="checkbox" asp-for="@Model.SomeList[i].Selected" disabled />
<input type="hidden" asp-for="@Model.SomeList[i].Selected" />
HTH致其他人:)
https://stackoverflow.com/questions/4718356
复制相似问题