ASP.NET MVC 5为隐藏输入呈现不同的bool值

时间:2015-03-04 08:28:46

标签: asp.net-mvc asp.net-mvc-5

给出以下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="Whatever" data-something="True" value="value">

为什么value属性未设置为True,但data-something属性是?

MVC 5是否会发生变化,因为在我的MVC 4应用中,这个问题不会发生。

1 个答案:

答案 0 :(得分:33)

我想我已经明白了。

我相信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" />

因此Razor viewengine会获取模型的bool值,如果valueModel.IsBoolValue,则会呈现(在我的情况下)true属性。否则,如果它是false,则根本不会呈现value属性。

编辑:

正如评论中提到的Zabavsky,要强制True或False的值出现在value attrbiute,简单使用ToString()

<input type="hidden" value="@Model.BoolProperty.ToString()" />