【问题标题】:Setting html attribute that is reserved keyword in Html.CheckBoxFor in ASP.NET MVC在 ASP.NET MVC 的 Html.CheckBoxFor 中设置保留关键字的 html 属性
【发布时间】:2010-04-22 08:54:10
【问题描述】:

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

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

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

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

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

有谁知道在使用CheckBoxFor 的同时解决这个问题的方法吗?

谢谢

【问题讨论】:

  • +1 也适用于尝试设置class html 属性。

标签: c# asp.net-mvc checkboxfor


【解决方案1】:
<%= 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" }) %>

【讨论】:

  • 感谢您的快速回复,我尝试使用 @ 前缀,但这似乎也不起作用,生成的 html 中根本没有 'checked' 属性! <input type="checkbox" value="true" name="DirectFlights" id="checkDirect">
  • 通过我更新的答案,我得到以下 Html 输出... >
  • 这与我尝试执行的方式完全相同,但由于某种原因,它总是从 html 发出选中的属性(但不是其他属性,例如类)。我真的很难过,所以我决定使用 CheckBox 而不是 CheckBoxFor。
  • 我认为模型覆盖了复选框的值。在复选框上方添加代码部分以设置默认值@{ Model.SomeBooleanValue = true; }
【解决方案2】:

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

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

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

也许这有帮助..

【讨论】:

    【解决方案3】:

    使用@checked

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

    【讨论】:

    • 可与@class 一起使用,但在尝试使用@checked 时,它根本不会向html 标记添加任何内容!
    • 你试过检查吗? (“c”大写)
    • 是的,也试过了,和@checked 的问题一样。这当然是一个奇怪的...
    • @AnderssonMelo 我也有同样的问题。有人找到答案了吗?
    【解决方案4】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2010-11-30
      • 2021-09-05
      • 2011-07-05
      • 1970-01-01
      • 2017-07-06
      • 2011-04-13
      相关资源
      最近更新 更多