【问题标题】:Boolean model binding issue in Mvc 4Mvc 4 中的布尔模型绑定问题
【发布时间】:2013-08-30 09:06:56
【问题描述】:

我想将一个布尔属性绑定到一个隐藏的输入控制器,但是输出的 html 代码是错误的

代码如下:

public class TestModel
{
    public bool IsOk { get; set; }
    public bool IsSuccess { get; set; }
}

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new TestModel { IsOk = false, IsSuccess = true });
    }
}

<h2>Index</h2>
<p>@Model.IsOk</p>
<p>
  <input type="hidden" value="@Model.IsOk" />
</p>
<p>
  <input type="hidden" value="@Model.IsSuccess" />
</p>

HTML 输出

<h2>Index</h2>
<p>False</p> //works

<p>
    <input type="hidden" /> //where is value?
</p>

<p>
    <input type="hidden" value="value" /> //wath's this?
</p>

但是如果我使用 ToString(),以上都运行良好,那是我的错误吗?

【问题讨论】:

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


【解决方案1】:

在 HTML 中,当您有一个用作 on/off 或 true/false 开关的属性时,您在属性为 off/false 时删除该属性,并在该属性打开时添加与属性名称相同值的属性/真的。 Razor 为您提供了您已经体验过的功能。

也许您打算在视图中使用Html.HiddenFor

<p>
    @Html.HiddenFor(m => m.IsOk)
</p>
<p>
    @Html.HiddenFor(m => m.IsSuccess)
</p>

这将在您拥有value="False"value="True" 的位置生成此HTML,如您所愿:

<p>
    <input data-val="true" data-val-required="The IsOk field is required." 
        id="IsOk" name="IsOk" type="hidden" value="False" />
</p>
<p>
    <input data-val="true" data-val-required="The IsSuccess field is required."
        id="IsSuccess" name="IsSuccess" type="hidden" value="True" />
</p>

此外,模型绑定器将能够往返查看模型属性。

【讨论】:

    【解决方案2】:

    HTML 属性需要字符串对象 它不会自动转换

    所以你必须使用ToString()

    【讨论】:

      【解决方案3】:

      请试试这个。

       $('#controlId').is(":checked");
      

      【讨论】:

      • 此语法用于通过jquery绑定布尔值时的复选框控制。
      猜你喜欢
      • 1970-01-01
      • 2015-02-17
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      • 2014-05-29
      相关资源
      最近更新 更多