当前位置: 首页 > news >正文

MVC验证

前言

MVC自己的验证机制,通过一个案例记录学习的成果。

首先,model代码如下:

public class Students
    {
        [Display(Name = "ID")]
        public int Id { set; get; }

        [Display(Name = "用户名")]
        [Required(ErrorMessage = "用户名不能为空")]
        public string Name { set; get; }

        [Display(Name = "用户手机号")]
        [Required(ErrorMessage = "用户手机号不能为空")]
        [RegularExpression(@"^1[3458][0-9]{9}$", ErrorMessage = "手机号格式不正确")]//自定义验证规则
        public string Phone { get; set; }

        [Display(Name = "用户邮箱")]
        [Required(ErrorMessage = "用户邮箱不能为空")]
        [RegularExpression(@"^[_/.a-z0-9]+@[a-z0-9]+[/.][a-z0-9]{2,}$", ErrorMessage = "邮箱格式不正确")]//自定义验证规则
        public string Emile { get; set; }
    }

其次,view代码如下:(用强制类型视图,自动生成的)

<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
 <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

 @using (Html.BeginForm()) {
        @Html.ValidationSummary(true)
        <fieldset>
            <legend>Students</legend>
   
            <div class="editor-label">
                @Html.LabelFor(model => model.Name)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Name)
                @Html.ValidationMessageFor(model => model.Name)
            </div>
   
            <div class="editor-label">
                @Html.LabelFor(model => model.Phone)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Phone)
                @Html.ValidationMessageFor(model => model.Phone)
            </div>
   
            <div class="editor-label">
                @Html.LabelFor(model => model.Emile)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Emile)
                @Html.ValidationMessageFor(model => model.Emile)
            </div>
   
            <p>
                @* @Html.ValidationSummary()*@ @*这里的注释是:ValidationSummary是显示所有字段的错误信息;
                                                                                           ValidationMessageFor是针对指定字段的错误信息;
                                                                                           一般都是使用它们其中的一个。*@
                <input type="submit" value="Create" />
            </p>
        </fieldset>
    }

最后,controller代码如下:

       [HttpGet]
        public ActionResult List()
        {
            return View();
        }

        [HttpPost]
        public ActionResult List(Students model)
        {
            //这里的注释是:如果model里面没有进行验证,可以在这里添加验证。不过一般都是在model里面做验证,方便简单。这里的验证可以作为特殊使用
            //if(model.Name==null)
            //{
            //    ModelState.AddModelError("Name", "用户名不能为空");
            //}
            //if(model.Phone==null)
            //{
            //    ModelState.AddModelError("Phone", "用户手机号不能为空");
            //}
            //if(model.Emile==null)
            //{
            //    ModelState.AddModelError("Emile", "用户邮箱不能为空");
            //}
            if(ModelState.IsValid)
            {
                //验证通过做什么
            }
            return View(model);
        }

 

运行结果:

结束

上面案例记录了MVC验证的实现过程,如果想了解更多MVC自带的默认验证规则,请查阅MSDN:http://msdn.microsoft.com/zh-cn/library/cc490428(v=vs.95).aspx

转载于:https://www.cnblogs.com/zl879211310/p/3478517.html

相关文章:

  • UVa10305 拓扑排序
  • 专科程序员与本科程序员之间有什么区别?
  • HTTP协议
  • 算法一:动态规划
  • Redis学习笔记 - pipline(流水线、管道)
  • nginx模块学习七 http_refer 防盗链
  • 【转】复利的营销力量
  • Disruptor - 介绍(1)
  • ASIHTTPRequest使用指南---翻译稿
  • 观察者模式
  • 分表分库之一:分布式数据库的常见用法
  • 主流的CSS水平和垂直居中技术大全
  • 简单工厂、工厂方法和抽象工厂
  • SQLite 多线程模型实测分析
  • 小白都能玩的算法day3-计算机的变革
  • Android 架构优化~MVP 架构改造
  • CentOS7简单部署NFS
  • CSS中外联样式表代表的含义
  • ES学习笔记(12)--Symbol
  • in typeof instanceof ===这些运算符有什么作用
  • JDK 6和JDK 7中的substring()方法
  • Linux gpio口使用方法
  • oschina
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Shadow DOM 内部构造及如何构建独立组件
  • Spring核心 Bean的高级装配
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 力扣(LeetCode)56
  • 三分钟教你同步 Visual Studio Code 设置
  • 写代码的正确姿势
  • 责任链模式的两种实现
  • Mac 上flink的安装与启动
  • mysql面试题分组并合并列
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #{}和${}的区别?
  • #QT项目实战(天气预报)
  • #每天一道面试题# 什么是MySQL的回表查询
  • #微信小程序(布局、渲染层基础知识)
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (六)软件测试分工
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)EOS中账户、钱包和密钥的关系
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .cn根服务器被攻击之后
  • .NET中的Exception处理(C#)
  • :如何用SQL脚本保存存储过程返回的结果集
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [AR]Vumark(下一代条形码)