我有一个由几个嵌套类组成的ViewModel类:
public class UserAccountViewModel : UserProfileViewModel
{
public UserAccountEmailViewModel UserAccountEmail { get; set; }
public UserAccountLocationViewModel UserAccountLocation { get; set; }
public UserAccountPasswordViewModel UserAccountPassword { get; set; }
}
从这里呈现的 HTML (注意 model.UserAccountEmail.Email):
<div class="editor-label">
@Html.LabelFor(model => model.UserAccountEmail.Email)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.UserAccountEmail.Email)
@Html.ValidationMessageFor(model => model.UserAccountEmail.Email)
</div>
是这样的:
name="UserAccountEmail.Email"
我希望这个名字只是Email
改变ViewData.TemplateInfo.HtmlFieldPrefix
也无济于事。重载 @Html.EditorFor
中的htmlFieldName
不起作用,因为我仍然希望标签和验证消息与呈现的 HTML 元素匹配(这些函数中的 htmlFieldName 没有重载)。
我宁愿不为此创建部分。
编辑:
唔......使用部分实际上还不错。这实际上很有意义。
在这里查看我关于此设计的答案,它可能对这种特定策略有意义
许多模型可供查看,具有许多部分视图