首页 > 代码库 > MVC之校验

MVC之校验

MVC简单校验的步骤

1.创建相应的实体类。

 public class UserInfo
    {
        [Required(ErrorMessage ="用户名不能为空")]
        public string UserName { get; set; }
        [Required (ErrorMessage ="密码不能为空")]
        public string PassWord { get;set; }
    }

 常用的检验特性标签:Required   StringLength    Range    RegularExpression 四个,一个属性ErroorMessage,用来指示相应的错误信息

2.为实体类添加相应的校验标签(CodeFirst中使用过这些属性标签)

3.创建实体类型的强类型页面(确保名称一致,实现自动映射),MVC 专门为强类型页面实现的校验

@model MVCCRUD.Models.UserInfo

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>CreateUser</title>
</head>
<body>
    <script src="http://www.mamicode.com/~/Scripts/jquery-1.8.2.min.js"></script>
    <script src="http://www.mamicode.com/~/Scripts/jquery.validate.min.js"></script>
    <script src="http://www.mamicode.com/~/Scripts/jquery.validate.unobtrusive.min.js"></script>
    
    @using (Html.BeginForm()) {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true)
    
        <fieldset>
            <legend>UserInfo</legend>
    
            <div class="editor-label">
                @Html.LabelFor(model => model.UserName)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.UserName)
                @Html.ValidationMessageFor(model => model.UserName)
            </div>
    
            <div class="editor-label">
                @Html.LabelFor(model => model.PassWord)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.PassWord)
                @Html.ValidationMessageFor(model => model.PassWord)
            </div>
    
            <p>
                <input type="submit" value="http://www.mamicode.com/Create" />
            </p>
        </fieldset>
    }
    
    <div>
        @Html.ActionLink("Back to List", "Index")
    </div>
</body>
</html>

 使用强类型视图生成的页面如上面的代码所示,如果不是是使用强类型进行创建页面的话,没法进行与UserInfo映射,也就没法讲UserInfo上的特性标签,翻译成相应的代码,上面的代码添加了相应的校验代码。

 <script src="http://www.mamicode.com/~/Scripts/jquery-1.8.2.min.js"></script>

<script src="http://www.mamicode.com/~/Scripts/jquery.validate.min.js"></script>

<script src="http://www.mamicode.com/~/Scripts/jquery.validate.unobtrusive.min.js"></script>

这三个js文件就是封装了相应校验的逻辑,第三个js就是隐式校验的文件,因为我们并没有看见相应的校验的逻辑,全部都已经隐式了,此时前端的代码中会产生很多校验的属性。

4.效果展示

技术分享

这种方式是MVC提供的一种针对强类型页面的校验方式,当然我们可以使用我们习惯的手动写一些Js校验的脚本。

 

5.MVC校验与EF中的Model相结合

首先当EF创建出相应的MOdel后,然后向model中属性添加特性标签,此时没有什么太大的问题,但是当我需要在手动使用EF模板引擎创建一个实体后,此时原来的在前一个model类中的属性标签就已经没有了。

(1)创建一个校验类(与EF中相应的model类位于同一个命名空间,同时属性的名字是完全一致的)

NameSpace Model

{

    public class UserInfoValidate

   {

     [Required(ErrorMessage)]
      public string UserName{get;set;}
      [Required(ErrorMessage)]
     public string PassWord{get;set;}

   }
[MetaDataType(typeof(UserInfoValidte))] public partial UserInfo { public stirng UserName{get;set;} public string PassWord{get;set;} } }

 

MVC之校验