Asp.net mvc ASP.NET MVC 5为隐藏输入呈现不同的布尔值
给定以下视图模型:Asp.net mvc ASP.NET MVC 5为隐藏输入呈现不同的布尔值,asp.net-mvc,asp.net-mvc-5,Asp.net Mvc,Asp.net Mvc 5,给定以下视图模型: public class FooViewModel { public bool IsBoolValue { get; set; } } 这种观点: <input type="hidden" id="Whatever" data-something="@Model.IsBoolValue" value="@Model.IsBoolValue" /> 隐藏输入字段的输出如下所示: 为什么值属性没有设置为真,而数据属性是 MVC 5中是否存在导致此问题
public class FooViewModel
{
public bool IsBoolValue { get; set; }
}
这种观点:
<input type="hidden" id="Whatever" data-something="@Model.IsBoolValue" value="@Model.IsBoolValue" />
隐藏输入字段的输出如下所示:
为什么值
属性没有设置为真
,而数据属性是
MVC 5中是否存在导致此问题的更改,因为在我的MVC 4应用程序中,此问题不会发生。我想我已经解决了
我相信Razor viewengine遵循HTML 5设置布尔属性的方法,如下所述:
在HTML 5中,bool属性设置如下:
或
因此,Razor viewengine将获取模型的bool值,并在model.IsBoolValue
为true
的情况下(在我的例子中)呈现value
属性。否则,如果它是false
,则根本不会呈现value
属性
编辑:
正如Zabavsky在评论中提到的,要强制在值
属性中显示True或False值,只需使用ToString()
:
首先,您应该向IsBoolValue指定输入的名称,这样做,输入的值将由mvc设置,现在模型绑定不起作用,如果您将输入的名称指定为IsBoolValue,则模型绑定将起作用。我认为值得一提的是,解决此问题的方法就是调用ToString()
属性:value=“@Model.IsBoolValue.ToString()”
。