在视图中如果没有添加
@section Scripts { @Scripts.Render("~/bundles/jqueryval") }
那么数据就不能转换成javascript脚本在客户端进行验证,不能节省流量,浪费钱。
所以,还有另一种方法可以在服务器端进行验证,服务器分为数据库服务器和主机服务器,数据库服务器主要存放表中要用到的数据,而主机服务器则用来存放网站的一些文件网页
ModelState.IsValid
这个属性在控制器中可以自动判断前端中的数据验证,它是一个bool类型,如果提交一个文本框中的数据是空的,那么将返回false,否则为true
ModelState.AddModelError("UserName", "用户名已经注册");
这个属性可以返回一些错误信息,比如用户名已经注册,UserName是字段名,后面的参数是要显示的文本,在UserNmae后面显示
完整的代码在下面:
public class RegisterModel { [Required] public string UserName { get; set; } public string Email { get; set; } [StringLength(5,ErrorMessage="字符长度已超出")] [Compare("Password")] public string Password { get; set; } public string ConfirmPassword { get; set; } }
public ActionResult Contact(Models.RegisterModel model) { ViewBag.Message = "Your contact page."; if (ModelState.IsValid) { if (model.UserName == "admin") { ModelState.AddModelError("UserName", "用户名已经注册"); } } else { ModelState.AddModelError("UserName", "用户名不能为空,真的不骗你"); } return View(model); }
@model MvcBookStore.Models.RegisterModel @{ ViewBag.Title = "Contact"; } <h2>@ViewBag.Title.</h2> <h3>@ViewBag.Message</h3> <address> One Microsoft Way<br /> Redmond, WA 98052-6399<br /> <abbr title="Phone">P:</abbr> 425.555.0100 </address> <address> <strong>Support:</strong> <a href="mailto:Support@example.com">Support@example.com</a><br /> <strong>Marketing:</strong> <a href="mailto:Marketing@example.com">Marketing@example.com</a> </address> @using (Html.BeginForm("Contact", "Home", FormMethod.Post)) { @Html.LabelFor(m=>m.UserName) @Html.TextBoxFor(m=>m.UserName) @Html.ValidationMessageFor(m=>m.UserName) <input type="submit" value="提交"/> } @section Scripts { @Scripts.Render("~/bundles/jqueryval") }