MVC数据验证使用小结

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

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

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

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

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

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

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

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

一、设计思路

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

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

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

二、代码实现

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

 1     public class UserPwdEditModel {
 2         [Display(Name = "旧密码")]
 3         [Required(ErrorMessage = "请输入 {0}。")]
 4         [Remote("Validate", "UserInfo", HttpMethod = "post", ErrorMessage = "旧密码错误")]
 5         [Editable(true)]
 6         public string OldPwd {
 7             get;
 8             set;
 9         }
10
11         [Display(Name = "新密码")]
12         [Required(ErrorMessage = "请输入 {0}。")]
13         [RegularExpression(@"^(([a-z]+)|([A-Z]+)).([0-9]+)", ErrorMessage = "密码只能包含英文、数字(必须以字母开头)")]
14         [StringLength(18, MinimumLength = 6, ErrorMessage = "密码长度限制在6-18个字符")]
15         public string NewPwd {
16             get;
17             set;
18         }
19
20         [Display(Name = "重复新密码")]
21         [Required(ErrorMessage = "请再次输入 新密码。")]
22         //[Remote("ValidateRepeatPwd", "UserInfo", HttpMethod = "post", AdditionalFields = "NewPwd", ErrorMessage = "两次密码不一致,请重新输入")]
23         [Compare("NewPwd", ErrorMessage = "两次密码不一致,请重新输入")]
24         public string RepeatPwd {
25             get;
26             set;
27         }
28     }

创建修改密码模型来

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

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

 1 @model GraduateMISX.ViewModels.UserInfo.UserPwdEditModel
 2 @{
 3     ViewBag.Title = "PasswordEdit";
 4     Layout = "~/Views/Shared/_Layout.cshtml";
 5 }
 6
 7 @using (Html.BeginForm("PasswordEdit", "UserInfo", FormMethod.Get, new {
 8     @id = "formOfBettersoft"
 9 })) {
10     <div class="tree-add-group">
11         <div class="tree-add-title">
12                 @Html.LabelFor(model => model.OldPwd)
13         </div>
14         <div class="tree-add-text">
15             @Html.PasswordFor(model => model.OldPwd)
16             @Html.ValidationMessageFor(model => model.OldPwd)
17         </div>
18     </div>
19     <div class="tree-add-group">
20         <div class="tree-add-title">
21                 @Html.LabelFor(model => model.NewPwd)
22         </div>
23         <div class="tree-add-text">
24             @Html.PasswordFor(model => model.NewPwd)
25             @Html.ValidationMessageFor(model => model.NewPwd)
26         </div>
27     </div>
28     <div class="tree-add-group">
29         <div class="tree-add-title">
30                 @Html.LabelFor(model => model.RepeatPwd)
31         </div>
32         <div class="tree-add-text">
33             @Html.PasswordFor(model => model.RepeatPwd)
34             @Html.ValidationMessageFor(model => model.RepeatPwd)
35         </div>
36     </div>
37     <div class="tree-add-group">
38         <input type="submit" value="保存" style="left: 200px" id="btnSubmit"/>
39     </div>
40 }

创建强类型视图

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

1  <appSettings>
2     <add key="ClientValidationEnabled" value="true" />
3     <add key="UnobtrusiveJavaScriptEnabled" value="true" />
4   </appSettings>

配置web.config

三、运行截图

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

时间: 2024-08-01 18:49:18

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

ASP.NET MVC 数据验证及相关内容_实用技巧

一.数据验证 数据验证的步骤在模型类中添加与验证相关的特性标记在客户端导入与验证相关的js文件和css文件使用与验证相关的Html辅助方法在服务器端判断是否通过服务器端验证常用的验证标记 Required:非空验证StringLength:验证字符串的长度RegularExpression:正则表达式验证Compare:比较两个字段的值是否相等Range:范围验证Remote:服务器验证(需要在controller中编写返回值为JsonResult的Action)自定义验证标记与验证相关的js文

ASP.NET MVC数据验证

关于ASP.NET MVC的验证,用起来很特别,因为MS的封装,使人理解起来很费解.也可能很多人都在Scott Guthrie等人写的一本<ASP.NET MVC 1.0>书中,见过NerdDinner项目中对Dinner对象修改和添加的时的数据验证.但有许多封装的地方,不知道是怎样的工作原理,今天研究了,拿出来给大家分享一下. 数据库还是上一篇blog中的库与表,同样的方法来创建news表的实体类,在自动生成的news这个实体类中,我们发现有一个特殊的分部方法: partial void O

艾伟_转载:ASP.NET MVC数据验证

关于ASP.NET MVC的验证,用起来很特别,因为MS的封装,使人理解起来很费解.也可能很多人都在Scott Guthrie等人写的一本<ASP.NET MVC 1.0>书中,见过NerdDinner项目中对Dinner对象修改和添加的时的数据验证.但有许多封装的地方,不知道是怎样的工作原理,今天研究了,拿出来给大家分享一下. 数据库还是上一篇blog中的库与表,同样的方法来创建news表的实体类,在自动生成的news这个实体类中,我们发现有一个特殊的分部方法: partial void O

ASP.NET MVC数据验证Membership使用常见错误

在做注册界面的时候,出现了两个错误,让我纠结得想死,幸好最后都解决了,只能怪自己对MVC的 Membership了解得不深,尤其是有关Web.Config的配置问题. 问题一:Membership.IsValid返回为 false 这个问题一开始让我很无语,因为在之前也有做过注册界面,但并不会出现这样的问题,代码 如下: [HttpPost] public ActionResult Register(RegisterModel model) { if(ModelState.IsValid) {

ASP.NET MVC入门 8、ModelState与数据验证

ViewData有一个ModelState的属性,这是一个类型为ModelStateDictionary的 ModelState类型的字典集合.在进行数据验证的时候这个属性是比较有用的.在 使用Html.ValidationMessage()的时候,就是从ViewData.ModelState中检测是否 有指定的KEY,如果存在,就提示错误信息.例如在前一篇文章ASP.NET MVC 入门 7.Hellper与数据的提交与绑定中使用到的UpdateModel方法: 我们在View中使用Html.

C# web 开发 MVC 模型数据验证 必填项

问题描述 C# web 开发 MVC 模型数据验证 必填项 问题是: 在开发网站的时候.有一个页面是增加产品和编辑产品共用. 为了在编辑的时候.方便ID的获取.在页面上添加隐藏的绑定模型的控件. 在后台数据验证端.该字段并没有设置必填.而前台页面却提示必填.导致没法进行. input class="input-validation-error" data-val="true" data-val-number="字段 PlaProductId 必须是一个数字

DynamicData for Asp.net Mvc留言本实例 中篇 新建.删除.数据验证

上篇咱完成了显示列表的功能,下面接着来 也许您有疑问,这个显示列表不是和正常的Asp.net Mvc差不多吗?也是个foreach只是由原来的<%=字段%>变成了<% Html.RenderDynamicField(a, "Title"); %>之流,反倒是多写了字,除了分页那里爽一点以外,其它地方没见着好处. 下面我们就来看看DynamicData for Asp.net Mvc的好处 前提工作 总有前提工作真是累 这回还是在Application_Start

ASP.NET MVC结合jQuery插件进行数据验证

jQuery Validation是一个强大的数据验证插件,该插件支持"validation rule"即验证规则,规则将对表单内的输入控件进行控制或约束,譬如"本项必填","本项不能少于n个字符",或者"这不是一个有效的email地址" 等等.这些规则大多数和asp.net本身的验证控件类似.遗憾的是asp.net本身的验证控件不能在MVC框架下工作,因为服务器端控件受页面的 ViewState限制,而MVC框架是没有Vie

ZenTaoPHP框架的数据验证机制

项目中数据验证在web应用中尤其显得重要.下面来给大家介绍下ZenTaoPHP框架的数据验证机制. 一.首先来确定一个问题,即验证的规则放在什么地方? mvc程序中,每一层都可以放验证规则.比如很多的表单验证,会自动根据用户的输入进行验证,然后给予提示.那么数据验证放在哪一层呢?这个问题网络上大家有很多的争议.有的人主要放在view这一层,有的则主张放在control层.禅道框架选择了model层. 为什么这样做呢?因为model层是最低的一层,所有的数据操作,都要经过model来进行处理.那么