【发布时间】:2011-02-04 17:56:35
【问题描述】:
我的模型包含两个对象(提醒和用户)。每个提醒都与一个用户相关联。
public class Reminder
{
[DisplayName("Subject")]
[Required(ErrorMessage = "{0}: error message.")]
[StringLength(200, ErrorMessage = "{0}: error message.")]
public string Name { get; set; }
[DisplayName("Supervisor")]
public User DepartmentSupervisor { get; set; }
}
public class User
{
[DisplayName("Username")]
[Required(ErrorMessage = "{0}: error message.")]
[StringLength(25, ErrorMessage = "{0}: lerror message.")]
public string Username { get; set; }
[DisplayName("Email")]
[StringLength(50, ErrorMessage = "{0}: error message.")]
[Email(ErrorMessage="Not valid.")]
public string Email { get; set; }
}
我已经定义了一个用于将数据传递给我的视图的视图模型:
public class RemindersViewModel
{
public RemindersViewModel()
{
this.Supervisors = new List<SelectListItem>();
}
public Models.Reminder Reminder { get; set; }
public List<SelectListItem> Supervisors { get; set; }
}
Supervisors 是我用来呈现组合的用户列表 (SelectListItem)。
当我提交表单时,控制器会重新绑定对象提醒:
public ActionResult Edit(Guid id, Models.Reminder Reminder)
{
if (!ModelState.IsValid)
{
// PROBLEM.
}
}
一切正常,我的提醒与所选用户(用户名)相关联,但由于我不需要在下拉列表中显示电子邮件,绑定无法填充该字段,因为它不存在以我的形式。 在验证过程中我得到一个错误,因为它试图验证用户模型,这不是我真正想要的。 处理嵌套模型的最佳方法是什么?
【问题讨论】:
标签: asp.net-mvc-2 validation viewmodel