如何解决MVC4在视图中如何呈现bool的突破性变化

时间:2012-08-31 19:42:04

标签: asp.net-mvc asp.net-mvc-4 .net-4.5

我们最近将现有的.NET 4 MVC 3项目升级到.NET 4.5和MVC 4。

我们在视野中有这样的事情:

@Model.MyBool
<input type="hidden" name="foo" value="@Model.MyBool" />

用于呈现为:

True
<input type="hidden" name="foo" value="True" />

或:

False
<input type="hidden" name="foo" value="False" />

但现在它呈现为:

True
<input type="hidden" name="foo" value="value" />

或:

False
<input type="hidden" name="foo" />

也就是说,如果布尔属性在视图中呈现为隐藏输入值属性的值,则它不会呈现为TrueFalse(与其他地方一样),但而是渲染为value,或完全错过该属性。

两个问题:

  1. WTF?
  2. 有没有一种简单易行的方法可以解决这个破坏我应用程序的众多地方?这是一个很大的应用程序,我不想花时间浏览每一个视图来尝试识别我把bool放入输入字段的所有地方。

2 个答案:

答案 0 :(得分:3)

  

WTF?

Razor 2 conditional attributes

  

有没有一种简单易行的方法可以修复那些破坏我应用程序的地方?

我无法想到(这就是为什么你应该使用@Html.Hidden("foo", Model.MyBool))。我最好的猜测是使用Resharper的Structured Replace。

答案 1 :(得分:2)

看起来这样有效:

<input type="hidden" name="foo" value="@Model.MyBool.ToString()" />