Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 即使模型值为true,也未选中Html.CheckBoxFor_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 即使模型值为true,也未选中Html.CheckBoxFor

Asp.net mvc 即使模型值为true,也未选中Html.CheckBoxFor,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我有一个由viewmodel支持的Razor局部视图,其中包含一个名为Usedou的bool。假设Usedou属性为true,我在Razor中添加了以下代码: @Html.CheckBox("UseDuo", Model.UseDuo) @* Not checked *@ @Html.CheckBoxFor(m => m.UseDuo) @* Not checked *@ @Html.CheckBox("UseDuo2", Model.UseDuo) @* checked *@ @(Mod

我有一个由viewmodel支持的Razor局部视图,其中包含一个名为Usedou的bool。假设Usedou属性为true,我在Razor中添加了以下代码:

@Html.CheckBox("UseDuo", Model.UseDuo) @* Not checked *@
@Html.CheckBoxFor(m => m.UseDuo) @* Not checked *@
@Html.CheckBox("UseDuo2", Model.UseDuo) @* checked *@
@(Model.UseDuo ? "UseDuo=true" : "UseDuo=false") @* outputs UseDuo=true *@
前两个复选框未选中,但第三个复选框已选中,最后一行输出为“usedou=true”。有什么好处?根据我对这些Html助手的理解,应该选中所有三个复选框。但是,如果我的复选框的名称与我的模型属性的名称匹配,那么它似乎拒绝被正确地选中

我试图调试到.NETMVC源代码中,但调试器拒绝为涉及的大多数变量提供值,因此没有多大帮助

编辑:刚刚意识到这里没有实际问题。我的问题:为什么前两个框没有选中?

如果
@Html.CheckBoxFor(m=>m.usedou)
呈现一个未选中的复选框,并且您已经验证了
Model.usedou=true
,那么唯一可能的原因是modelstate中已经存在与您的模型冲突的
usedou
值。要确保这一点,请在返回视图之前尝试将其删除:

ModelState.Remove("UseDuo");
或清除整个模型状态:

ModelState.Clear();

现在,复选框帮助器将从模型中拾取值。如果选中该复选框,您将必须找到在代码的哪个部分中,
usedou
值已插入modelstate。

这是在POST中发生的,还是始终发生的?我不确定是否理解该问题。正在使用GET获取包含此剃须刀的页面。