1
我的模型包含两个对象(提醒和用户)。每个提醒都与一个用户相关联。使用嵌套模型进行ViewModel验证
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; }
}
监事是我用来渲染组合的用户(SelectListItem)的列表。
当我提交表单控制器重新绑定对象提醒:
public ActionResult Edit(Guid id, Models.Reminder Reminder)
{
if (!ModelState.IsValid)
{
// PROBLEM.
}
}
一切正常,我已经与已选定的用户(用户名),但相关的我的提醒,因为我并不需要显示的电子邮件中下拉菜单,绑定无法填充字段,导致它不存在于我的表单中。 在验证过程中,我得到一个错误,导致它尝试验证用户模型,这不是我真正想要的。 处理嵌套模型的最佳方法是什么?
感谢您的回答达林。据我所知,你建议“扁平化”我的视图模型?!我的班级remider将有一个不属于User类型的DepartmentSupervisor属性...是吗?你有什么例子吗? – LeftyX 2011-02-05 10:25:17