11

我正在使用 HtmlHelper 在我的视图中创建一个复选框,如下所示:

<%= Html.CheckBoxFor(model => model.SeatOnly, new { checked = "checked" })%>

但是,由于已检查是保留关键字,因此会引发错误。我发现有几个人说您必须使用“保留词前缀”,并且只需在属性前面放置一个 uderscore,如下所示:

<%= Html.CheckBoxFor(model => model.SeatOnly, new { _checked = "checked" })%>

这不会产生错误,但在生成的 html 中,该属性实际上是“_checked”,这意味着它不起作用(如果我使用 firebug 并删除下划线,那么该属性就会生效)。

有人在使用的同时知道解决方法CheckBoxFor吗?

谢谢

4

4 回答 4

17
<%= Html.CheckBoxFor(model => model.SeatOnly, new { @checked = "checked" })%>

你需要在它前面加上一个'@':-)

更新

刚刚使用以下内容进行了测试并且可以正常工作。试试这个 ...

模型

public class MyModel
{
    public bool SomeBooleanValue { get; set; }
    public string Title { get; set; }
}

查看(只剪掉重要的部分)

<%= Html.TextBoxFor(x => x.Title) %>

<%= Html.CheckBoxFor(x => x.SomeBooleanValue, new { @checked = "checked" }) %>
于 2010-04-22T08:56:18.140 回答
4

我遇到了同样的问题:在 html 代码中总是省略了“checked”属性。我通过将“true”传递给模型解决了这个问题。片段看起来像这样:

MyModel model = new MyModel();
model.SomeBooleanValue = true;

当您将复选框与模型连接时,复选框始终显示模型具有的值。如果您的模型中的值为“false”,则该复选框将始终处于未选中状态。

也许这有帮助..

于 2010-08-24T13:33:01.150 回答
0

采用@checked

也与属性class(保留字)一起出现,它们使用 @class

于 2010-04-22T09:19:26.297 回答
0

我想不出一种方法让 HtmlHelper 注册选中的属性,所以我简单地使用了它Html.CheckBox("SeatOnly", true)。这样我的视图模型中的属性仍然被设置并且复选框被选中。

这很好,但我仍然想知道为什么@checked 与@class 的工作方式不同。

于 2010-04-22T10:01:01.483 回答