自定义由 EditorFor 助手创建的每个元素

Customizing each element created by the `EditorFor` helper

如果用作 EditorFor(x=> x, new {htmlAttributes = new {@class = "x"}})EditorFor 助手可用于自动构建模型。问题是,由于它会自动生成标签、字段和验证消息,因此是否可以为传递给此方法的匿名类型中的每一个元素自定义样式和 类 (new { htmlAttributes = ..} ) ?

你必须使用 EditorTemplate 并且 EditorFor 助手会根据你的模板自动渲染你的模型,你不需要依赖 htmlAttributes 属性 用于自定义您的视图。这样做的好处是,如果你的模板是针对DateTimeIFormFile等类型的,那么你的模板可以重复使用。你可以参考下面的例子:

UserModelTemplate.cshtml:
-------------------------
@model UserModel 

<div class="form-group">
    <label class="hero-label">
         @Html.DisplayNameFor(m=> m.Username)
         <span class="text-danger">
            @Html.ValidationMessageFor(m=> m.Username)
         </span>
     </label>
     @Html.TextBoxFor(m=> m.Username, new { @class = "form-control"})
</div>

你可以继续这样下去。完成模板开发后,您可以将它与 EditorFor 助手一起使用(将它放在共享文件夹中,也可以放在子文件夹中以便更好地组织

@Html.EditorFor(model=> model, "UserModelTemplate")