服务器端和客户端验证

在视图中如果没有添加

@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")
}




原文地址:https://www.cnblogs.com/772933011qq/p/4505152.html