我使用@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