首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果禁用,即使选择了,Html.CheckBox也会返回false

如果禁用,即使选择了,Html.CheckBox也会返回false
EN

Stack Overflow用户
提问于 2011-01-18 05:58:34
回答 4查看 21.4K关注 0票数 30

希望对你的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?

EN

回答 4

Stack Overflow用户

发布于 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>
    }
票数 4
EN

Stack Overflow用户

发布于 2018-09-19 06:31:33

我在尝试为复选框使用disabled时遇到了类似的问题。我的解决方案就是不显示复选框,因为用户没有修改该字段的权限。

我还确保了Html.HiddenFor在那里,这样就保留了值。

票数 0
EN

Stack Overflow用户

发布于 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致其他人:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4718356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档