使用上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