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