将css类添加到razor元素

时间:2013-04-17 13:56:09

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

剃刀如果我有类似的东西:

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

我如何向他们添加css类或id?我一直在阅读帮助者,但我是否必须为每一个元素做一个帮手?没有简单的方法可以为razor表单元素添加类或id吗?

3 个答案:

答案 0 :(得分:9)

你不能仅仅因为你不知道将使用什么模板而使用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" })

答案 1 :(得分:3)

CheckboxFor很容易,你可以这样做:

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

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

答案 2 :(得分:0)

由于EditorFor不是特定于类型的,因此您无法在其中使用它。

对于CheckBoxFor,您可以使用:

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

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