1.明确验证模型
直接在Controller里的Action里验证,eg:
[HttpPost]
public ViewResult MakeBooking(Appointment appt) {
if (string.IsNullOrEmpty(appt.ClientName)) {
ModelState.AddModelError("ClientName", "Please enter your name");
}
if (ModelState.IsValidField("Date") && DateTime.Now > appt.Date) {
ModelState.AddModelError("Date", "Please enter a date in the future");
}
if (!appt.TermsAccepted) {
ModelState.AddModelError("TermsAccepted", "You must accept the terms");
}
if (ModelState.IsValid) {
repository.SaveAppointment(appt);
return View("Completed", appt);
} else {
return View();
}
}
public ViewResult MakeBooking(Appointment appt) {
if (string.IsNullOrEmpty(appt.ClientName)) {
ModelState.AddModelError("ClientName", "Please enter your name");
}
if (ModelState.IsValidField("Date") && DateTime.Now > appt.Date) {
ModelState.AddModelError("Date", "Please enter a date in the future");
}
if (!appt.TermsAccepted) {
ModelState.AddModelError("TermsAccepted", "You must accept the terms");
}
if (ModelState.IsValid) {
repository.SaveAppointment(appt);
return View("Completed", appt);
} else {
return View();
}
}
如果验证没通过,就会报错。报错的样式在~/Content/Site.css文件的input-validation-error中定义,默认如下:
.input-validation-error {
border: 1px solid #ff0000;
background-color: #ffeeee;
}
border: 1px solid #ff0000;
background-color: #ffeeee;
}
以上写法仅仅不会通过验证,但是不会给出错误提示信息,如果要显示错误提示信息,必须在View中加入:
@Html.ValidationSummary()