【发布时间】:2011-04-13 19:35:04
【问题描述】:
我在 DropDownListFor 上使用验证时遇到问题...
我的模特:
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 始终为 false...查看 ModelState 内部,错误在 Role.Name 键中...错误是:Name field is required
有没有办法解决这个问题?怎么样?
谢谢
【问题讨论】: