• MVC中数据的内部校验


    针对MVC中实例类型的修饰,我们可以采用DataAnnotations类来完成,该类所处的命名空间是System.ComponentModel.DataAnnotations;

    一、通过开类型,能够修改Model类型的属性,如下代码所示:

    public class Employee
        {
            [Key]
            public int EmployeeId { get; set; }
    
            [Required(ErrorMessage = "Enter First Name"), StringLength(50)]
            public string FirstName { get; set; }
    
            [StringLength(50,ErrorMessage="Last Name length should be greater than 50")]
            public string LastName { get; set; }
    
            public int Salary { get; set; }
        }

    备注:

    1、[key]主键唯一,Required必填,ErrorMessage错误提示内容,StringLength表述字段长度。

    Form表单代码:

    <!DOCTYPE html>
    
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>CreateEmployee</title>
    </head>
    <body>
        <div>
            <form action="/Employee/SaveEmployee" method="post">
               <table>
                <tr>
                    <td>First Name:</td>
                    <td><input type="text" id="TxtFName" name="FirstName" value="" /></td>
                    <td>@Html.ValidationMessage("FirstName")</td>
                </tr>
                <tr>
                    <td>Last Name:</td>
                    <td><input type="text" id="TxtLName" name="LastName" value="" /></td>
                    <td>@Html.ValidationMessage("LastName")</td>
                </tr>
                <tr>
                    <td>Salary:</td>
                    <td><input type="text" id="TxtSalary" name="Salary" value="" /></td>
                    <td>@Html.ValidationMessage("Salary")</td>
                </tr>
                <tr>
                    <td>
                        <input type="submit" name="BtnSave" value="Save Employee" />
                        <input type="submit" name="BtnSave" value="Cancel" />
                    </td>
                </tr>
               </table>
            </form>
        </div>
    </body>
    </html>

    备注:@Html.ValidationMessage表述验收字段异常时,显示异常提示信息。

    后台Action代码:

          public ActionResult SaveEmployee(Employee et, string BtnSave)
            {
                switch (BtnSave)
                {
                    case "Save Employee":
                        if (ModelState.IsValid)
                        {
                            EmployeeBusinessLayer empbal = new EmployeeBusinessLayer();
                            empbal.SaveEmployee(et);
                            return RedirectToAction("Index");
                        }
                        else
                        {
                            return View("CreateEmployee");
                        }
                    case "Cancel":
                    //    RedirectToAction("index");
                        return RedirectToAction("Index");                                      
                }
                return new EmptyResult();
            }

    备注:ModelState.IsValid表述Model字段验证是否有效

    二、自定义服务端验证

    1、新建自定义类:

    public class FirstNameValidation : ValidationAttribute
        {
            protected override ValidationResult IsValid(object value, ValidationContext validationContext)
            {
                if (value == null)
                {
                    return new ValidationResult("Please Provide First Name");
                }
                else
                {
                    if (value.ToString().Contains("@"))
                    {
                        return new ValidationResult("First Name should not contain @");
                    }
                }
                return ValidationResult.Success;
            }
        }

    2、使用自定义验证类型

     public class Employee
        {
            [Key]
            public int EmployeeId { get; set; }
    
            [Required(ErrorMessage = "Enter First Name"), StringLength(50), FirstNameValidation]
            public string FirstName { get; set; }
    
            public int Salary { get; set; }
        }
  • 相关阅读:
    mySQL教程 第1章 数据库设计
    System center virtual machine manager 2008 R2安装部署及实战技术
    cisco ssh配置
    IPv6地址介绍
    远程桌面如何复制本地文件 远程桌面拷贝电脑上的文件方法
    mySQL教程 第2章 准备学习用到的表和数据
    十四个ASP.NET基础知识问答(C#版)
    十四个ASP.NET基础知识问答(C#版)
    关闭框架网页(C#)
    关闭框架网页(C#)
  • 原文地址:https://www.cnblogs.com/xibei666/p/4989646.html
Copyright © 2020-2023  润新知