【问题标题】:Addind css classes to razor elements将 css 类添加到 razor 元素
【发布时间】:2013-04-17 22:04:19
【问题描述】:

如果我有类似的东西:

@Html.EditorFor(model => model.name) 甚至:@Html.CheckBoxFor(m => m.RememberMe)

如何向它们添加 css 类或 id?我一直在阅读有关助手的内容,但是我是否必须为每个元素制作一个助手?有没有简单的方法可以向 Razor 表单元素添加类或 id?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-3 razor


    【解决方案1】:

    你不能用EditorFor 助手来做这件事,因为你不知道将使用什么模板。您可以实现它,但您需要编写自定义编辑器模板。例如,这可以通过覆盖default editor template 并考虑表示附加视图数据的第二个参数来实现。

    这是一个示例,说明此类自定义编辑器模板如何查找字符串类型 (~/Views/Shared/EditorTemplates/string.cshtml):

    @Html.TextBox(
        "", 
        ViewData.TemplateInfo.FormattedModelValue,
        ViewData
    )
    

    然后你可以这样使用它:

    @Html.EditorFor(model => model.name, new { @class = "myclass" })
    

    使用 CheckBoxFor 助手,您可以做到这一点:

    @Html.CheckBoxFor(m => m.RememberMe, new { @class = "myclass" })
    

    【讨论】:

    • 啊,我今天该退休了?你现在到处都是 :) 直到我发布我的答案才看到你的答案。
    • @vonv.,然而,即使在 2 分钟后发布,它仍然是你的 :-)
    • 有了这篇博文,因为它指向 MVC2 为 MVC 3 工作?
    • @KyleAdams,当然它适用于 MVC 3 甚至 4。自 MVC 2 以来,模板方面的情况根本没有改变。在我的回答中,我刚刚将模板调整为Razor 语法,但当然如果您使用的是 WebForms 视图引擎,它将与博客文章相同。顺便说一句,我强烈建议您阅读布拉德威尔逊关于该主题的系列博客文章。他们非常好。
    • 是的,我想这是因为“活动”选项卡是默认选项卡,如果没有旧帖子中包含 cmets,它也会显示最新答案。好吧 +1 给你,因为你总是回答“更完整”。你提供了一个更好的 wiki ;)
    【解决方案2】:

    CheckboxFor 很简单,你可以这样做:

    @Html.CheckBoxFor(m => m.RememberMe, new { @class="your_class", @id="the_id" })
    

    EditorFor 有点棘手,因为它不支持开箱即用。我的意思是您可以为每种类型创建一个模板,然后执行 TextBoxFor 添加 html 属性(与 CheckBoxFor 的语法相同)。您可能必须针对您希望支持的每种类型执行此操作。

    【讨论】:

      【解决方案3】:

      因为EditorFor 不是特定类型的,所以您不能在它们上使用它。

      对于CheckBoxFor,您可以使用:

      @Html.CheckBoxFor(m => m.RememberMe, new { @class = "myClass", id = "myID" })
      

      注意class 之前的@,因为这是C# 中的保留关键字

      【讨论】:

      • 这不适用于 EditorFor。它的第二个论点并不像大多数人认为的那样。
      猜你喜欢
      • 2012-09-20
      • 2017-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      • 2023-03-15
      • 2023-03-22
      • 2019-03-25
      相关资源
      最近更新 更多