MVC3 数据验证用法之密码验证设计思路

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

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

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

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

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

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

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

一、设计思路

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

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

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

二、代码实现

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

MVC3 数据验证用法之密码验证设计思路
 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数据验证,其中Remote节里的参数分别代表action,controller,请求方式(Post/Get),错误提示信息ErrorMessage,action代码如下:

MVC3 数据验证用法之密码验证设计思路
        /// <summary>

        /// 验证旧密码是否正确

        /// </summary>

        /// <param name="Password">旧密码</param>

        /// <returns>如果旧密码正确,返回true;反之,返回false</returns>

        [HttpPost]

        public JsonResult Validate(string OldPwd) {

            var str = this.db.Users.Where(p => p.ID == 1 && p.Password == OldPwd).FirstOrDefault();

            bool isvalidate = false;

            if (str != null)

            isvalidate = true;

            return Json(isvalidate, JsonRequestBehavior.AllowGet);

        }
验证原密码是否正确
MVC3 数据验证用法之密码验证设计思路
 1         /// <summary>

 2         /// 验证两次密码是否相同

 3         /// </summary>

 4         /// <param name="NewPwd">初始化新密码</param>

 5         /// <param name="RepeatPwd">重复输入新密码</param>

 6         /// <returns>返回两次密码比较结果,若相等,返回true;反之,返回false</returns>

 7         [HttpPost]

 8         public JsonResult ValidateRepeatPwd(string NewPwd, string RepeatPwd) {

 9             bool isvalidate = false;

10             if (NewPwd.Trim().ToLower() == RepeatPwd.Trim().ToLower())

11                 isvalidate = true;

12             return Json(isvalidate, JsonRequestBehavior.AllowGet);

13         }
验证两次输入的新密码是否相同

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

MVC3 数据验证用法之密码验证设计思路
 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节

MVC3 数据验证用法之密码验证设计思路
1  <appSettings>

2     <add key="ClientValidationEnabled" value="true" />

3     <add key="UnobtrusiveJavaScriptEnabled" value="true" />

4   </appSettings>
配置web.config

三、运行截图

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

MVC3 数据验证用法之密码验证设计思路

 

 

MVC3 数据验证用法之密码验证设计思路

 

 

你可能感兴趣的:(mvc)