使用上DropDownListFor驗證有問題...... I'm驗證上DropDownListFor問題(ModelState.IsValid始終爲false)
我的模型:
public class User
{
...
public virtual int Id{ get; set; }
[Required(ErrorMessage = "Required.")]
public virtual Role Role { get; set; }
}
public class Role
{
public virtual int Id{ get; set; }
[Required(ErrorMessage = "Required.")]
public virtual string Name { get; set; }
}
我的控制器:
public ActionResult Edit()
{
ViewBag.Roles = new SelectList(new Repository<Role>().GetAll(), "Id", "Name");
return View();
}
我的編輯視圖(強類型)
@model User
...
@Html.LabelFor(model => model.Role)
@Html.DropDownListFor(model => model.Role.Id, ViewBag.Roles as SelectList, "-- Select --",new { @class = "form radius" })
@Html.ValidationMessageFor(model => model.Role)
所有的偉大工程,當我試圖保存用戶模型中的問題被激發:
[HttpPost]
public ActionResult Edit(User user)
{
if (ModelState.IsValid)
...
}
的ModelState.IsValid總是假的... ...展望的ModelState裏面,誤差值在Role.Name鍵...錯誤是:名稱字段是必需的
有沒有什麼辦法解決這個問題?怎麼樣?
感謝
問題是我有一個角色UI,用戶可以註冊新的角色......並且需要名稱是必需的,除了我的Id屬性屬於EntityBase類... – Paul 2011-04-13 19:44:28
@Paul然後確保您的表單上有一個名稱輸入字段,並且發送值或您的模型永遠不會有效。如果沒有名稱字段,則使用視圖模型。事實上,不應該,你應該總是使用視圖模型:-) – 2011-04-13 19:45:25
是的,這就是我想要做的,但我不知道如何:( – Paul 2011-04-13 19:47:36