zoukankan      html  css  js  c++  java
  • 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="~/Scripts/jquery-1.8.2.min.js"></script>
        <script src="~/Scripts/jquery.validate.min.js"></script>
        <script src="~/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="Create" />
                </p>
            </fieldset>
        }
        
        <div>
            @Html.ActionLink("Back to List", "Index")
        </div>
    </body>
    </html>
    

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

     <script src="~/Scripts/jquery-1.8.2.min.js"></script>

    <script src="~/Scripts/jquery.validate.min.js"></script>

    <script src="~/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;} } }
  • 相关阅读:
    [Windows]wmic查看运行进程的参数
    Java8中的foreach跳出循环break/return
    Python Learning(6)字典
    SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后端篇(三): 整合阿里云 OSS 服务 -- 上传、下载文件、图片
    SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后端篇(四): 整合阿里云 短信服务、整合 JWT 单点登录
    SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后端篇(五): 数据表设计、使用 jwt、redis、sms 工具类完善注册登录逻辑
    Servlet、Jsp
    BIO、NIO、AIO
    HashMap (JDK1.8) 分析
    mysql常见笔试题
  • 原文地址:https://www.cnblogs.com/XZhao/p/6664738.html
Copyright © 2011-2022 走看看