是的,你可以做到這一點(也將用於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