为什么我的隐藏input写入:value =“value”而不是true / false?

我有一个MVC4网站,(作为一个隐藏的forms的一部分):

<input name="somefield" type="hidden" value="@ViewBag.Test"/> 

ViewBag.Test的值是true 。 表单域将发布到表单的input参数中:

 public ActionResult SomeAction(bool somefield = false, ...) 

但是somefield总是false 。 经过调查,我看到源代码有:

 <input name="somefield" type="hidden" value="value"/> 

但是,我知道这用于工作。 发生了什么,我该怎么办?

One Solution collect form web for “为什么我的隐藏input写入:value =“value”而不是true / false?”

这种行为在MVC3和MVC4之间改变了。 在MVC3中,如果你有:

 <input name="somefield" type="hidden" someprop="@(SomeBooleanExpression)"/> 

它会写得很字面:

 <input name="somefield" type="hidden" someprop="True"/> 

但是,在MVC4中,它遵循“checkbox”等规则,所以如果值是true你会得到:

 <input name="somefield" type="hidden" someprop="someprop"/> 

如果是false ,则完全省略:

 <input name="somefield" type="hidden"/> 

为了解决这个问题,考虑.ToString()

 <input name="somefield" type="hidden" someprop="@(SomeBooleanExpression.ToString())"/> 

然后遵循string规则而不是布尔规则。

  • 点字符“。” 在MVC Web API 2中用于请求如api / people / STAFF.45287
  • MVC4的DataType.Date EditorFor不会显示在Chrome中的date值,在Internet Explorer罚款
  • WebAPI StreamContent vs PushStreamContent
  • 将ASP.NET MVC 3项目转换为MVC 4
  • asp.net webapi发布 - xml文件不能复制
  • MVC 4列表模型绑定如何工作?
  • C#ASP.NET MVC返回上一页
  • 在Asp.NET MVC中以dd / mm / yyyy格式显示date时间值
  • Razor MVC使用Model Array填充Javascript数组
  • 在一个项目中混合Web Api和ASP.Net MVC页面
  • 将数据注释添加到由entity framework生成的类