希望对您的asp.net mvc专家来说是一个简单的问题:

我有一个复选框,像这样创建:

<%=Html.CheckBox("MyCheckBox", true, new { disabled = "disabled"})%>

在我的行动中,我正在像这样检查值:
bool isChecked = form["MyCheckBox"].Contains("true");

我希望这将返回true,因为它已被检查。但是,创建的隐藏元素具有错误的值:
<input checked="checked" disabled="disabled" id="MyCheckBox" name="MyCheckBox" type="checkbox" value="true" />
<input name="MyCheckBox" type="hidden" value="false" />

首先,有没有一种方法可以使HtmlHelper表现出预期的效果?还是手动构造输入/创建自己的帮助器方法的唯一方法? (并不是说这很重要...)

第二,任何人都可以阐明复选框为何如此运行吗?我是否在假设已禁用的复选框为== true时做错了?禁用状态在语义上是否意味着错误?

最佳答案

标有disabled="disabled"属性的输入字段NEVER 会将其值发送到服务器。如果要实现此目的,可以使用readonly="readonly"属性,该属性仍然阻止用户修改值,但在提交表单时发送现有值。

关于asp.net-mvc - Html.CheckBox如果被禁用,即使被选中也返回false,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4718356/

10-09 06:50
查看更多