2

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

代码如下:</p>

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(),以上都运行良好,那是我的错误吗?

4

3 回答 3

3

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

所以你必须使用ToString()

于 2013-08-30T09:10:57.270 回答
3

在 HTML 中,当您有一个用作 on/off 或 true/false 开关的属性时,您在属性为 off/false 时删除该属性,并在该属性为 on/true 时添加与属性名称相同值的属性。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>

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

于 2013-08-30T09:21:33.233 回答
-1

请试试这个。

 $('#controlId').is(":checked");
于 2015-10-14T13:05:33.987 回答