是的,你可以做到这一点(也将用于CRUD方法同型号):
示例模型
public class User
{
public virtual int Id{ get; set; }
public virtual Role Role { get; set; }
}
public class Role
{
[Required(ErrorMessage = "Id Required.")]
public virtual int Id { get; set; }
[Required(ErrorMessage = "Name Required.")]
public virtual string Name { get; set; }
}
示例视图与验证的下拉列表
@Html.DropDownListFor(m => m.Role.Id, (SelectList)ViewBag.gRoles, "-- Select --")
@Html.ValidationMessageFor(m => m.Role.Id)
控制器:清除所需的(但不是必需的)字段
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Creedit(User x)
{
x.Role = db.RoseSet.Find(x.Role.Id);
if (x.Role != null)
{
ModelState["Role.Name"].Errors.Clear();
}
if (ModelState.IsValid)
{
// proceed
}
else
{
// return validation error
}
}
+1,用于提供链接addModelError – 2012-04-24 11:07:26
ModelState.Remove(field)就是我所需要的!谢谢。 – 2012-04-24 12:55:32
如果您在模型上使用IValidatableObject,请注意此问题,因为此属性验证失败时不会运行该验证,但如果仅在您的Remove()属性失败时再次运行,则表明您的错误有效结果。 – pauloya 2012-11-26 16:23:46