在 MVC 3 中选中复选框的值不为真

Value for checkbox is not true when checked in MVC 3

本文关键字:复选框 MVC      更新时间:2023-09-26

>我有一个非常奇怪的情况,我将复选框中的值发布到我的控制器,即使选中也是如此!

我的部分观点模型:

public class BeslutIStortViewDTO
{
    public BeslutIStortDTO BeslutIStort { get; set; }
    public BeslutIStortListorDTO SelectListor { get; set; }
}
public class BeslutIStortDTO
{
    public int id { get; set; }
    public bool Ok { get; set; }
    ... other stuff
}

我的部分观点:

<div id="colOk" class="kolumn_header">
    @Html.LabelFor(model => model.BeslutIStort.Ok)
    @Html.CheckBoxFor(model => model.BeslutIStort.Ok, new { @class = "rensa", tabindex = 5 })
</div>

在传递给控制器的字符串中,当未选中该框时,一切似乎都正常:

BeslutIStort.Ok=false

但!当我检查它时:

BeslutIStort.Ok=&BeslutIStort.Ok=false

它在字符串中的两次,第一个没有值,oterh 是false的,所以两者都是错误的。我当然只期望一个,而且那个是true.

另一个有趣的发现是,在精确呈现的html中,复选框如下所示:

<input class="rensa" id="BeslutIStort_Ok" name="BeslutIStort.Ok" tabindex="5" type="checkbox" value="true" /><input name="BeslutIStort.Ok" type="hidden" value="false" />

它有一个隐藏的领域!

当我将值发布到服务器时,我使用 ajax 执行此操作,并且 data 参数定义如下:

data: $("#BisData").serialize(),

我希望有人能帮助我对此有所了解,并帮助我对我的控制器进行一些"真实":-(

=== S O L V E D ===随着结果的发展,我有这样的javascript:

$(".

rensa"(.val("(;

这使得复选框不起作用。我添加了这个:

$(".

rensaCheckbox"(.attr("checked", false(;

对于复选框,所以现在它可以工作了。

它也很奇怪。
首先,您收到了两次值BeslutIStort.Ok=&BeslutIStort.Ok=false因为当您使用@Html.CheckboxFor()
时,Razor 引擎会自动在表单中放置具有相同名称和值 false 的隐藏字段这样做是为了即使未选中该复选框,也会返回false值。

第二。。。您正在接收空值,因为您的输入(复选框(HTML 控件上没有值。如果您希望返回一个值,只需使用以下代码
添加一个值

<div id="colOk" class="kolumn_header">
    @Html.LabelFor(model => model.BeslutIStort.Ok)
    @Html.CheckBoxFor(model => model.BeslutIStort.Ok, new { @class = "rensa", tabindex = 5,value="true" })
</div>