我使用@Html.CheckBoxFor(x => x.Luxury)
为什么复选框总是如此
其所以无论生成下面的HTML
<input id="Luxury" type="checkbox" value="true" name="Luxury" data-val-required="The Luxury field is required." data-val="true">
<input type="hidden" value="true" name="Luxury">
我设置复选框控制器动作所获得的价值为TRUE,即使未检查。
如何获得MVC不使复选框返回true。 当我调试的第一支撑我之前也呼吁任何代码,我可以看到Banner.Luxury总是=真
我的班级
public class Banner
{
public int Id { get; set; }
public bool Luxury { get; set; }
}
[HttpPost]
public ActionResult Save(Banner banner)
....
}
望着这个问题Why does ASP.NET MVC Html.CheckBox output two INPUTs with the same name?没有帮助,当我运行
为Convert.ToBoolean(Request.Form.GetValues("Luxury"));
只有“真”不是“真;假”;
这种解决方法的工作原理,但它是一个糟糕的HACK
@{ if (Model.Luxury)
{
<input type="checkbox" name="Luxury" value="1" checked="checked" />
}
else
{
<input type="checkbox" name="Luxury" value="1" />
}
}
代码
banner.Luxury = !(Request.Form.GetValues("Luxury") == null);
这很可能是问题在于你的行为,所以你想要发布代码。 HTML中的复选框可能无法按照您的操作假定它执行的方式工作(即,如果您手动将其值绑定到模型,那么您可能会做错)。 – JimmiTh 2012-02-11 14:31:03
@TheKaneda我给我的问题添加了更多的代码,但是我没有在代码中做任何事情。我在其他许多页面上使用这个类似的代码,它工作正常。 – Daveo 2012-02-11 14:40:02
不,因为如果你的隐藏值是错误的,即使你勾选了复选框,你仍然会从'Luxury'中得到错误,因为带有名字的LAST字段优先。 – twilson 2012-02-11 14:40:39