原文: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. awakeFromNib小总结

    awakeFromNib 在使用IB的时候才会涉及到此方法的使用,当.nib文件被载入的时候,会发送一个awakeFromNib的消息到.nib文件里的每一个对象,每一个对象都能够定义自己的awake ...

  2. SPARK在linux中的部署,以及SPARK中聚类算法的使用

    眼下,SPARK在大数据处理领域十分流行.尤其是对于大规模数据集上的机器学习算法.SPARK更具有优势.一下初步介绍SPARK在linux中的部署与使用,以及当中聚类算法的实现. 在官网http:// ...

  3. 腾讯公司数据分析岗位的hadoop工作 线性回归 k-means算法 朴素贝叶斯算法 SpringMVC组件 某公司的广告投放系统 KNN算法 社交网络模型 SpringMVC注解方式

    腾讯公司数据分析岗位的hadoop工作 线性回归 k-means算法 朴素贝叶斯算法 SpringMVC组件 某公司的广告投放系统 KNN算法 社交网络模型 SpringMVC注解方式 某移动公司实时 ...

  4. 【Demo 0003】Android 事件

    本章学习要点:        1.  了解Android中资源用途:        2.  掌握资源使用通用规则:        3.  掌握具体资源使用方法;

  5. C++晋升之std中vector的实现原理(标准模板动态库中矢量的实现原理)

    我们实现的数据结构是为了解决在执行过程中动态的开辟空间使用(比如我们不停的输入,输入的多少我们不确定) 假设当你看到这篇文章的话,就当作是零食咀嚼,营养没有有BUG,能够直接看我博客中文章:CPU对内 ...

  6. HDU 4344 随机法判素数(费马小定理

    #include <cstdio> #include <ctime> #include <cmath> #include <algorithm> usi ...

  7. QNX 多线程 (线程1每隔20ms读取 number;线程2每隔10ms计算一次)

    #include <pthread.h>#include <stdio.h>#include <sys/time.h>#include <string.h&g ...

  8. 怎么用CIFilter给图片加上各种各样的滤镜_1

    近期在做对图像处理的app,而要对图像进行处理,CoreImage是离不开的框架. 上网Google了一下,大部分的博客都是仅仅讲了怎么给图像加上怀旧(CISepiaTone).模糊(CIBloom) ...

  9. [UVALive 6663 Count the Regions] (dfs + 离散化)

    链接:https://icpcarchive.ecs.baylor.edu/index.php? option=com_onlinejudge&Itemid=8&page=show_p ...

  10. 站在OC的基础上快速理解Swift的类与结构体

    阅读此文章前,您已经有一定的Object-C语法基础了!) 2014年,Apple推出了Swift,最近开始应用到实际的项目中. 首先我发现在编写Swift代码的时候,经常会遇到Xcode不能提示,卡 ...