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;} } }
  • 相关阅读:
    UVA 10618 Tango Tango Insurrection
    UVA 10118 Free Candies
    HDU 1024 Max Sum Plus Plus
    POJ 1984 Navigation Nightmare
    CODEVS 3546 矩阵链乘法
    UVA 1625 Color Length
    UVA 1347 Tour
    UVA 437 The Tower of Babylon
    UVA 1622 Robot
    UVA127-"Accordian" Patience(模拟)
  • 原文地址:https://www.cnblogs.com/XZhao/p/6664738.html
Copyright © 2011-2022 走看看