2014-10-09 120 views
0
@Html.CheckBoxFor(m => m.Close, new { disabled = "disabled" }) 

上述html助手方法生成以下html代码。Html.checkboxfor向控制器发布虚假值

<input checked="checked" data-val="true" data-val-required="The Close field is required." disabled="disabled" id="Close" name="Close" type="checkbox" value="true"> 

<input name="Close" type="hidden" value="false"> 

当我提交表单时,它只会发回错误...任何想法都可能是这样吗?我检查了fiddler中的回发值。

回答

2

禁用控件不回发。由于@Html.CheckBoxFor()生成了一个复选框和一个隐藏输入,其默认值为(false),因此只会隐藏隐藏的输入并且Close的值为false。

+0

多亏啊,你知道的周围做一个只读/禁用复选框提交给控制器什么办法? – 2014-10-09 04:20:39

+0

由于它不可编辑,所以使用'@ Html.hiddenFor(m => m.Close)'将它回发,并且它还需要该属性的可视指示,并添加'@DisplayFor(m => m.Close )' – 2014-10-09 04:23:45

+0

@DisplayFor(m => m.Close)做了这个工作 – 2014-10-09 04:28:19

0

这是你如何检查虚假或不假在你的控制器:

var isChecked = Request.Form["Modelname"];