asp.net-mvc - Mvc 4 中的 bool 模型绑定(bind)问题

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

我想将 bool 属性绑定(bind)到隐藏的输入 Controller ,但输出的 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(),以上所有方法都可以正常工作,所以这是我的错误吗?

最佳答案

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

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

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

这将生成此 HTML,其中包含 value="False"value="True" 正如您所期望的:

<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>

此外,模型绑定(bind)器将能够让您往返查看模型属性。

关于asp.net-mvc - Mvc 4 中的 bool 模型绑定(bind)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18529049/

相关文章:

c# - 加入两个模型后如何返回匿名类型

c# - ASP.NET MVC - 表单提交、检索数据库 ID 和重定向

asp.net-mvc - jqGrid中的自定义删除功能

c# - 我应该将我的 View 分成许多小 View 还是只将其变成一个大 View ?

c# - 验证在 MVC 4 项目中不起作用

c# - 如何在 asp.net mvc 4 的 apicontroller 中使用 session

asp.net-mvc - 带 Moq 的单元测试存储库

css - 如何在 ASP.MVC Bootstrap 模板中增加 EditorFor 中输入表单的长度?

javascript - 每 5 秒从数据库获取数据并通过 AJAX 将其发送到 View

c# - MVC4 Controller 将多个 json 对象发布到 Controller ,ajax 发布