我有一个视图模型的是,其他特性中,包含“EmailAddress的”对象的数组。 EmailAddress本身具有诸如“地址”和“IsPrimary”之类的属性。我的查看模型细分为:MVC EditorFor结合键入阵列
public class UserDetailsViewModel {
public BUser User { get; set; }
public string[] Roles { get; set; }
public EmailAddress[] EmailAddresses { get; set; }
}
我正在显示一个非常标准的“用户详细信息”页面。例如,我使用@Html.DisplayFor(model => model.User.UserName)
和@Html.DisplayFor(model => model.User.Comment)
我也有页面上的部分,列出数据显示所有与用户相关联的EmailAddress的对象:
@if(Model.EmailAddresses.Length > 0) {
foreach (var address in Model.EmailAddresses) {
<div>
@Html.DisplayFor(model => address.Address)
</div>
}
} else {
<div class="center">User does not have any email addresses.</div>
}
我的问题是,我想表现出“添加电子邮件地址“表格上方的电子邮件地址列表。我以为我会走“正常”的做法正是如此:
@using(Html.BeginForm(new { id=Model.User.UserName, action="AddUserEmailAddress" })) {
<text>Address:</text> @Html.EditorFor(model => ** HERE I AM STUCK **)
<input type="submit" value="Add Email" class="button" />
}
正如你或许可以告诉,我在这里停留。我试过model => Model.EmailAddresses[0]
和model => Model.EmailAddresses.FirstOrDefault()
。这两个都失败了。
我相信,我会对此完全错误的。我甚至想过为我的EmailAddress类型的ViewModel添加一个“虚拟”属性,这样我就可以绑定到我的EditorFor中 - 但这似乎是一个非常糟糕的黑客攻击。必须有一些简单的东西,我可以忽略!
我希望得到任何帮助任何人都可以用这件事提供。先谢谢你!
我想到了,但后来我没有得到自动模型验证(客户端和服务器端)。 – BradBrening