在剃须刀,如果我有这样的事情:
@Html.EditorFor(model => model.name)
或者甚至: @Html.CheckBoxFor(m => m.RememberMe)
我将如何添加一个CSS类或ID给他们? 我一直在阅读有关的帮手,但我将不得不作出一个帮手每一个元素? 有没有简单的方法来添加一个class和id剃刀表单元素?
在剃须刀,如果我有这样的事情:
@Html.EditorFor(model => model.name)
或者甚至: @Html.CheckBoxFor(m => m.RememberMe)
我将如何添加一个CSS类或ID给他们? 我一直在阅读有关的帮手,但我将不得不作出一个帮手每一个元素? 有没有简单的方法来添加一个class和id剃刀表单元素?
You cannot do that with the EditorFor
helper simply because you don't know what template will be used. You could achieve it but you will need to write a custom editor template. For example this could be achieved by overriding the default editor template
and taking into account the second parameter which represents an additional view data.
Here's an example of how such a custom editor template could look for string types (~/Views/Shared/EditorTemplates/string.cshtml
):
@Html.TextBox(
"",
ViewData.TemplateInfo.FormattedModelValue,
ViewData
)
and then you could use it like that:
@Html.EditorFor(model => model.name, new { @class = "myclass" })
With the CheckBoxFor helper you could do that:
@Html.CheckBoxFor(m => m.RememberMe, new { @class = "myclass" })
这很容易对CheckboxFor,你可以做这样的:
@Html.CheckBoxFor(m => m.RememberMe, new { @class="your_class", @id="the_id" })
这是棘手与EditorFor一点,因为它不支持开箱即用的。 我的意思是,你可以为每个类型的模板,然后做一个TextBoxFor添加HTML属性(相同的语法与CheckBoxFor)。 您可能需要为你做它想要支持的每个类型。
由于EditorFor
不是类型特异性的,你不能使用它的。
对于CheckBoxFor
,你可以使用:
@Html.CheckBoxFor(m => m.RememberMe, new { @class = "myClass", id = "myID" })
注意@
之前class
,因为这是在C#中保留关键字