给出以下viewmodel:
public class Fooviewmodel { public bool IsBoolValue { get; set; } }
和这个观点:
<input type="hidden" id="Whatever" data-something="@Model.IsBoolValue" value="@Model.IsBoolValue" />
隐藏输入字段的输出是:
< input type =“hidden”id =“无论如何”data-something =“True”value =“value”>
值属性没有设置为true,但是data-something属性是什么?
是否有MVC 5的变化,这将导致这一点,因为在我的MVC 4应用程序这个问题不会发生.
解决方法
我想我已经弄清楚了.
我相信Razor viewengine遵循HTML 5设置布尔属性的方式,如下所述:
What does it mean in HTML 5 when an attribute is a boolean attribute?
在HTML 5中,bool属性设置如下:
< input readonly />
要么
< input readonly =“readonly”/>
因此,如果Model.IsBoolValue为true,则Razor viewengine会使用您的模型的bool值,并将渲染(在我的情况下)值属性.否则,如果它是false,那么value属性根本就不会被渲染.
编辑:
正如Zabavsky在评论中所说,强制True或False的值出现在值attrbiute中,简单的使用ToString():
< input type =“hidden”value =“@ Model.BoolProperty.ToString()”/>