【问题标题】:ASP.NET MVC 5 renders different bool value for hidden inputASP.NET MVC 5 为隐藏输入呈现不同的布尔值
【发布时间】:2015-05-05 03:53:46
【问题描述】:

给定以下视图模型:

public class FooViewModel
{
    public bool IsBoolValue { get; set; }
}

还有这个观点:

<input type="hidden" id="Whatever" data-something="@Model.IsBoolValue" value="@Model.IsBoolValue" />

隐藏输入域的输出是这样的:

&lt;input type="hidden" id="Whatever" data-something="True" value="value"&gt;

value属性怎么没有设置为True,而data-something属性设置了?

在 MVC 5 中是否存在会导致此问题的更改,因为在我的 MVC 4 应用程序中不会发生此问题。

【问题讨论】:

  • 首先你应该在 IsBoolValue 中指明你的输入的名称,doig this 这个输入的值将由 mvc 设置,现在模型绑定不起作用,如果你将输入的名称指定为IsBoolValue 模型绑定将起作用。

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


【解决方案1】:

我想我已经明白了。

我相信 Razor 视图引擎遵循 HTML 5 设置布尔属性的方式,如下所述:

What does it mean in HTML 5 when an attribute is a boolean attribute?

在 HTML 5 中,bool 属性设置如下:

&lt;input readonly /&gt;

&lt;input readonly="readonly" /&gt;

因此,如果 Model.IsBoolValuetrue,Razor 视图引擎将采用模型的布尔值并呈现(在我的情况下)value 属性。否则,如果是false,则根本不会呈现value 属性。

编辑:

如 cmets 中提到的 Zabavsky,要强制 True 或 False 的值出现在 value 属性中,简单使用 ToString()

&lt;input type="hidden" value="@Model.BoolProperty.ToString()" /&gt;

【讨论】:

  • 我认为值得一提的是,解决这个问题只需在属性上调用ToString()value="@Model.IsBoolValue.ToString()"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 2022-10-06
  • 1970-01-01
  • 2013-12-22
  • 2023-03-03
  • 2014-09-07
  • 2014-04-04
相关资源
最近更新 更多