文章内容较长,用于记录自己学习。模型验证(Model Vaildation)是确保应用程序所接受的数据适合于绑定到模型,并且在不合适时给用户提供有用的信息,以帮助他们修正问题的过程。
准备示例项目
新建一个空的MVC项目,名叫ModelVaildation。
在Model文件夹中,新建一个Appointment.cs的文件,如下图所示:
public class Appointment
{
public string ClientName { get; set; }
[DataType(DataType.Date)]
public DateTime Date { get; set; }
public bool TermsAccepted { get; set; }
}
创建一个Home控制器,代码如下图所示:
public class HomeController : Controller
{
// GET: Home
public ViewResult MakeBooking()
{
return View(new Appointment { Date = DateTime.Now});
}
[HttpPost]
public ViewResult MakeBooking(Appointment appt)
{
//在实际项目中,此处是在数据库中存储新的Appointment对象
return View("Completed", appt);
}
}
创建布局页_Layout.cshtml,代码如下图所示:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
<style type="text/css">
.field-validation-error {
color:#f00;
}
.validation-summary-errors {
color:#f00; font-weight:bold;
}
.input-validation-error {
border:2px solid #f00; background-color :#fee;
}
input[type="checkbox"].input-validation-error {
outline:2px solid #f00;
}
</style>
</head>
<body>
<div>
@RenderBody()
</div>
</body>
</html>
创建一个视图启动文件_ViewStart.cshtml,以便布局页运用于视图,如下图所示:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
创建MakeBooking.cshtml视图,代码如下图所示:
@model ModelVaildation.Models.Appointment
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>MakeBooking</title>
</head>
<body>
<h4>Book an Appointment</h4>
@using (Html.BeginForm()) {
<p>Your Name : @Html.EditorFor(m => m.ClientName)</p>
<p>Appointment Date: @Html.EditorFor(m => m.Date)</p>
<p>@Html.EditorFor(m => m.TermsAccepted)</p>
<input type="submit" value="Make Booking"/>
}
</body>
</html>
创建Completed.cshtml文件,代码如如下图所示:
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Completed</title>
</head>
<body>
<h4> Your Name is confirmed</h4>
<p> Your Name :<b>@Html.EditorFor(m => m.ClientName)</b></p>
<p> The data of your appointment is :<b>@Html.DisplayFor(m => m.Date)</b></p>
</body>
</html>
运行程序并导航到/Home/MakeBooking ,输入文本数据,如下图所示: