原文:MVC数据验证使用小结

描述:MVC数据验证使用小结

内容:display,Required,stringLength,Remote,compare,RegularExpression

本人最近在公司用mvc做了一个修改密码的功能,使用的是mvc数据验证,现将使用心得分享给大家

首先,我们先分析一下,如果要实现密码修改功能,我们需要做哪些工作。先从页面说起吧,前台页面起码需要三个密码框吧,分别表示原始密码,新密码,重复新密码,最后再加一个按钮,这样一个页面的基本元素就构造完毕了

其次,我们需要对添加的数据进行验证,包括,原始密码正确性验证,新密码格式验证,重复输入的密码一致性验证

最后,我们把修改后的密码保存到数据库里就大功告成了(注:这里只是简单的实现了密码的修改功能)

所以,分析到这里,思路也就清晰了,下面就该实现了

一、设计思路

1、设计一个修改密码模型类

2、使用mvc创建一个该模型类的强类型视图

3、提交表单,将新密码保存到数据库

二、代码实现

1、我们先看一下设计的模型类的代码吧

     public class UserPwdEditModel {
[Display(Name = "旧密码")]
[Required(ErrorMessage = "请输入 {0}。")]
[Remote("Validate", "UserInfo", HttpMethod = "post", ErrorMessage = "旧密码错误")]
[Editable(true)]
public string OldPwd {
get;
set;
} [Display(Name = "新密码")]
[Required(ErrorMessage = "请输入 {0}。")]
[RegularExpression(@"^(([a-z]+)|([A-Z]+)).([0-9]+)", ErrorMessage = "密码只能包含英文、数字(必须以字母开头)")]
[StringLength(, MinimumLength = , ErrorMessage = "密码长度限制在6-18个字符")]
public string NewPwd {
get;
set;
} [Display(Name = "重复新密码")]
[Required(ErrorMessage = "请再次输入 新密码。")]
//[Remote("ValidateRepeatPwd", "UserInfo", HttpMethod = "post", AdditionalFields = "NewPwd", ErrorMessage = "两次密码不一致,请重新输入")]
[Compare("NewPwd", ErrorMessage = "两次密码不一致,请重新输入")]
public string RepeatPwd {
get;
set;
}
}

创建修改密码模型来

没错,我把页面上的基本元素做成了一个模型,这样可以很方便的使用mvc数据验证

2、下面我们创建强类型视图(创建过程省略...)

 @model GraduateMISX.ViewModels.UserInfo.UserPwdEditModel
@{
ViewBag.Title = "PasswordEdit";
Layout = "~/Views/Shared/_Layout.cshtml";
} @using (Html.BeginForm("PasswordEdit", "UserInfo", FormMethod.Get, new {
@id = "formOfBettersoft"
})) {
<div class="tree-add-group">
<div class="tree-add-title">
@Html.LabelFor(model => model.OldPwd)
</div>
<div class="tree-add-text">
@Html.PasswordFor(model => model.OldPwd)
@Html.ValidationMessageFor(model => model.OldPwd)
</div>
</div>
<div class="tree-add-group">
<div class="tree-add-title">
@Html.LabelFor(model => model.NewPwd)
</div>
<div class="tree-add-text">
@Html.PasswordFor(model => model.NewPwd)
@Html.ValidationMessageFor(model => model.NewPwd)
</div>
</div>
<div class="tree-add-group">
<div class="tree-add-title">
@Html.LabelFor(model => model.RepeatPwd)
</div>
<div class="tree-add-text">
@Html.PasswordFor(model => model.RepeatPwd)
@Html.ValidationMessageFor(model => model.RepeatPwd)
</div>
</div>
<div class="tree-add-group">
<input type="submit" value="保存" style="left: 200px" id="btnSubmit"/>
</div>
}

创建强类型视图

注:在使用Remote验证的时候应在Web.config文件下配置appsetting节

  <appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>

配置web.config

三、运行截图

运行程序,点击提交按钮后将会看到模型验证已经生效

MVC数据验证使用小结的更多相关文章

  1. MVC 数据验证【转】

    [转自]http://www.cnblogs.com/dozer/archive/2010/04/12/MVC-DataAnnotations.html 作者Dozer 今天在这里给大家介绍一下MVC ...

  2. MVC数据验证

    深入浅出 MVC 数据验证 2.0 [附演示源码] 今天在这里给大家介绍一下MVC的数据验证框架. 在1.0版中,很多朋友提出了怎么使用客户端验证,今天找了一些资料,发现了客户端验证的方法. 1.MV ...

  3. MVC 数据验证

    MVC 数据验证 前一篇说了MVC数据验证的例子,这次来详细说说各种各样的验证注解.System.ComponentModel.DataAnnotations 一.基础特性 一.Required 必填 ...

  4. MVC 数据验证[转]

    前一篇说了MVC数据验证的例子,这次来详细说说各种各样的验证注解. 一.基础特性 一.Required 必填选项,当提交的表单缺少该值就引发验证错误. 二.StringLength 指定允许的长度 指 ...

  5. mvc 数据验证金钱格式decimal格式验证

    mvc 数据验证金钱格式decimal格式验证 首先看下代码 /// <summary> /// 产品单价 /// </summary> [Display(Name = &qu ...

  6. Hibernate Validation,Spring mvc 数据验证框架注解

    1.@NotNull:不能为 Null,但是可以为Empty:用在基本数据类型上. @NotNull(message="{state.notnull.valid}", groups ...

  7. MVC数据验证原理及自定义ModelValidatorProvider实现无编译修改验证规则和错误信息

    Asp.net MVC中的提供非常简单易用的数据验证解决方案. 通过System.ComponentModel.DataAnnotations提供的很多的验证规则(Required, StringLe ...

  8. 【转】ASP.NET MVC 数据验证及相关内容

    原文地址:http://www.jb51.net/article/56713.htm 一.数据验证 数据验证的步骤在模型类中添加与验证相关的特性标记在客户端导入与验证相关的js文件和css文件使用与验 ...

  9. Spring MVC 数据验证——validate注解方式

    1.说明 学习注解方式之前,应该先学习一下编码方式的spring注入.这样便于理解验证框架的工作原理.在出错的时候,也能更好的解决这个问题.所以本次博客教程也是基于编码方式.仅仅是在原来的基础加上注解 ...

随机推荐

  1. 极度简约 最小 Linux 发行版 Tiny Core Linux 7.1 发布

    感谢Linux Story的投递 Tiny Core Linux 是一个极度简约但是也高度可扩展的 GNU/Linux 发行版,其之精简甚至可以小到只有 10MB 大小,昨天 5月23日刚刚发布的 T ...

  2. PHP学习之-1.4 计算表达式

    计算表达式 不同于HTML和CSS,在PHP中做计算,比如我们写 echo 12*3 计算结果是36.代码如下 <?php echo 12*3;?> 实例 <!DOCTYPE HTM ...

  3. C语言总结之---关键字

    我记得我开始学习C语言的时候,那时候还在读高中,我们老师就把C语言的关键字,全部写在黑板上,老师说我们下面的两节课的内容就是(把它给记下来) 你还记得标准C有多少个关键字吗? 第一:关键字描述 C99 ...

  4. android 实现跳动频谱 DEMO

    package com.terry.AudioFx; import android.app.Activity; import android.content.Context; import andro ...

  5. 【ASP.NET Web API教程】2.1 创建支持CRUD操作的Web API

    原文 [ASP.NET Web API教程]2.1 创建支持CRUD操作的Web API 2.1 Creating a Web API that Supports CRUD Operations2.1 ...

  6. activemq java版本要求

    <pre name="code" class="html">activemq: redis01:/root# cp apache-activemq- ...

  7. 用ATL开发和部署ActiveX网页控件

    用ATL开发和部署ActiveX网页控件 摘 要 ActiveX插件技术广泛的运用于B/S系统中,本文通过一个项目实例,详细介绍用ATL开发和部署ActiveX网页控件的过程.学习使用ActiveX让 ...

  8. java开发异常类型汇总

    1. java.lang.nullpointerexception 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对 ...

  9. STM32建立project库函数方法

    (1)打开keilMDK主界面能够看到project中有一个默认的project,点击这个project名字,然后选择菜单Project->Close Project,就关闭掉这个project ...

  10. Swift - 标签条(UITabBar)标签页控制器(UITabBarController)用法

    App底部的tab标签页可以方便的把功能模块划分清楚,只需点击相应的标签页就可以展示完全独立的视图页面,同时各标签页间的视图也可以进行数据交换.   TabBarItem系统自带图标样式(System ...