为什么我的隐藏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规则而不是布尔规则。

  • Razor视图抛出“名称模型”在当前上下文中不存在“
  • Api控制器声明多个Get语句
  • 使用MSBuild.exe使用cmd行“发布”ASP.NET MVC 4项目
  • 不显眼的validation不适用于dynamic内容
  • 如何在WebApi中添加和获取Header值
  • Bundler不包括.min文件
  • asp.net webapi发布 - xml文件不能复制
  • 在控制器的新窗口中打开mvc视图
  • 如何“热身”entity framework? 什么时候变“冷”?
  • 为什么不能在MVC4 Razor布局文件中识别@Scripts和@Styles命令?
  • 如何在Asp.Net MVC 4中validationHttpPostedFileBase属性的文件types?