从ASP.NET MVC中的ViewModel中删除前缀

时间:2012-05-26 22:42:19

标签: asp.net-mvc asp.net-mvc-3 razor viewmodel model-binding

我有一个由几个嵌套类组成的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没有帮助。重载htmlFieldName中的@Html.EditorFor是行不通的,因为我仍然希望标签和验证消息与呈现的HTML元素相匹配(这些函数中的htmlFieldName没有重载)。

我宁愿不为此创建部分内容。

修改

Meh ...使用partials实际上并不算太糟糕。它实际上非常有意义。

1 个答案:

答案 0 :(得分:4)

请参阅我在这里关于此设计的答案,这可能对此特定策略有意义

Many models to view with many partial views