我只知道一点非常简单的关于MVC的验证
2014-06-02 02:47
155 查看
我只知道一些非常简单的关于MVC的验证
如题,我只知道一点非常简单的关于MVC的验证,所以如果您接触过MVC的验证,相信也就不用看了,这个且当作是学习笔记吧。
先小讲解一下他基本的五个从Model里打上特性标签验证的方法。
在此之前先写一下事例以证明之。
第一步,创建一个MVC的应用程序,在Model里创建一个类,我是叫的User类。里面有几个属性,Name是必须填写的,年龄需要在0到150之间,Email得符合相应的邮箱格式才可以,密码不能超过15个字符,确认密码的选项得跟第一次输入的一致。我已经写好类且特性标签也写好。
页面的代码
略说一下, 页面里"@Html.ValidationMessageFor(model => model.属性)"也就是验证消息的地方。其信息将在此处显示。
然后,我们来看一下效果:
好的。事例完成。应该很好理解了。现在就说一下这些个验证吧。
第一个特性标签是Required,它呢就是用于非空校验的。这是校验内容是否为空的。可以在括号里写上其给我们显示的错误消息,如同这个事例里的Name.其显示的位置就是在页面的 @Html.ValidationMessageFor(model => model.Name)这里。如果没有这行代码也就验证不了的。
第二个是特性标签是Range,它是用于int或者double类型的,校验其是否在这个区间。可以在括号里写上其给我们显示的错误消息,如同这个事例里的Age.其显示的位置就是在页面的 @Html.ValidationMessageFor(model => model.Age)这里。如果没有这行代码也就验证不了的。
第三个特性标签时RegularExpression,它是用于填写的内容是否符合一个正则的。第一个就是要写的一个正则表达式,第二给就是可以给我们显示的错误消息的信息了。这个就算是比较强大了点了,比如我们要验证身份证,我们只要在第一个位置写上一个符合身份证号码的正则就可以了。电话号码神马的也是如此。如同这个事例里的Email.其显示的位置就是在页面的 @Html.ValidationMessageFor(model => model.Email)这个地方。如果没有这行代码也就验证不了的。
第四个特性标签就是StringLength,它是用于验证输入的内容不能超过的长度。如同这个事例里的Pwd.其显示的位置就是在页面的 @Html.ValidationMessageFor(model => model.Pwd)这个地方。如果没有这行代码也就验证不了的。它还可以验证输入内容不能少于的长度,其写法:[StringLength(16,MinimumLength = 2,ErrorMessage = "名字不能少于两个字也不能大于16个字")]。
第五个特性标签是Compare,它是用于两个属性的比较,比较其内容是否相同。常常用于密码验证时。第一个位置是要写它要比较的属性的名字,第二个是写相应的错误信息。如同这个事例里的ComfirmPwd.其显示的位置就是在页面的 @Html.ValidationMessageFor(model => model.ComfirmPwd)这个地方。如果没有这行代码也就验证不了的。另外注意这个是在和上面的Pwd的内容做比较哦。
还有一种,我知道的就是用 ModelState,我个人的理解就是其相当于一个字典,可以向其中加入键值对的数据,其方法是:ModelState.AddModelError("这里填写key", "这里填写错误消息,也就是value");然后在View那边就用“@Html.ValidationMessage(key)”显示错误信息,如果有用RAZOR引擎的话。我倒没怎么用过这个方法,我一向将key写成空,然后在View那边验证的话就是用的"@Html.ValidationSummary(true)"来显示错误消息。比如看一下我以前写的一个OA的例子。
效果:
我所知道的MVC的验证方式了也就这么点。希望园友们感兴趣的园友们指点指点,共同进步。另外有两个问题,如果园友有知道的可以告之一下,我们发现我OA的那个项目中,提示的颜色是红的,那么,怎么在第写的第一个事例中也将其验证消息改为红色呢。第二个,依旧和第一个事例有点关,就是说我这里有一个类,里面有一些属性,是用的MODELFIRST,我想这这个里面加上一些验证,后来又改了下模型,然后重新生成了一下T4模板,然后,打的特性就全部都没有了,关于这个问题是应该怎么解决呢。
如题,我只知道一点非常简单的关于MVC的验证,所以如果您接触过MVC的验证,相信也就不用看了,这个且当作是学习笔记吧。
先小讲解一下他基本的五个从Model里打上特性标签验证的方法。
在此之前先写一下事例以证明之。
第一步,创建一个MVC的应用程序,在Model里创建一个类,我是叫的User类。里面有几个属性,Name是必须填写的,年龄需要在0到150之间,Email得符合相应的邮箱格式才可以,密码不能超过15个字符,确认密码的选项得跟第一次输入的一致。我已经写好类且特性标签也写好。
@model StudyMvcVal1.Models.User @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Create</title> </head> <body> <script src="~/Scripts/jquery-1.7.1.min.js"></script> <script src="~/Scripts/jquery.validate.min.js"></script> <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script> @using (Html.BeginForm()) { @Html.ValidationSummary(true) <fieldset> <legend>User</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.Age) </div> <div class="editor-field"> @Html.EditorFor(model => model.Age) @Html.ValidationMessageFor(model => model.Age) </div> <div class="editor-label"> @Html.LabelFor(model => model.Email) </div> <div class="editor-field"> @Html.EditorFor(model => model.Email) @Html.ValidationMessageFor(model => model.Email) </div> <div class="editor-label"> @Html.LabelFor(model => model.Pwd) </div> <div class="editor-field"> @Html.EditorFor(model => model.Pwd) @Html.ValidationMessageFor(model => model.Pwd) </div> <div class="editor-label"> @Html.LabelFor(model => model.ComfirmPwd) </div> <div class="editor-field"> @Html.EditorFor(model => model.ComfirmPwd) @Html.ValidationMessageFor(model => model.ComfirmPwd) </div> <p> <input type="submit" value="Create" /> </p> </fieldset> } <div> @Html.ActionLink("Back to List", "Index") </div> </body> </html>
页面的代码
略说一下, 页面里"@Html.ValidationMessageFor(model => model.属性)"也就是验证消息的地方。其信息将在此处显示。
然后,我们来看一下效果:
好的。事例完成。应该很好理解了。现在就说一下这些个验证吧。
第一个特性标签是Required,它呢就是用于非空校验的。这是校验内容是否为空的。可以在括号里写上其给我们显示的错误消息,如同这个事例里的Name.其显示的位置就是在页面的 @Html.ValidationMessageFor(model => model.Name)这里。如果没有这行代码也就验证不了的。
[Required(ErrorMessage="姓名是必须要填写的")] public string Name { get; set; }
第二个是特性标签是Range,它是用于int或者double类型的,校验其是否在这个区间。可以在括号里写上其给我们显示的错误消息,如同这个事例里的Age.其显示的位置就是在页面的 @Html.ValidationMessageFor(model => model.Age)这里。如果没有这行代码也就验证不了的。
[Range(0,150,ErrorMessage = "年龄需要是在0到150之间才可以的")] public int Age { get; set; }
第三个特性标签时RegularExpression,它是用于填写的内容是否符合一个正则的。第一个就是要写的一个正则表达式,第二给就是可以给我们显示的错误消息的信息了。这个就算是比较强大了点了,比如我们要验证身份证,我们只要在第一个位置写上一个符合身份证号码的正则就可以了。电话号码神马的也是如此。如同这个事例里的Email.其显示的位置就是在页面的 @Html.ValidationMessageFor(model => model.Email)这个地方。如果没有这行代码也就验证不了的。
[RegularExpression(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$",ErrorMessage = "请您输入正确的邮箱格式")] public string Email { get; set; }
第四个特性标签就是StringLength,它是用于验证输入的内容不能超过的长度。如同这个事例里的Pwd.其显示的位置就是在页面的 @Html.ValidationMessageFor(model => model.Pwd)这个地方。如果没有这行代码也就验证不了的。它还可以验证输入内容不能少于的长度,其写法:[StringLength(16,MinimumLength = 2,ErrorMessage = "名字不能少于两个字也不能大于16个字")]。
[StringLength(15,ErrorMessage = "密码长度不能超过15个字符")] public string Pwd { get; set; }
第五个特性标签是Compare,它是用于两个属性的比较,比较其内容是否相同。常常用于密码验证时。第一个位置是要写它要比较的属性的名字,第二个是写相应的错误信息。如同这个事例里的ComfirmPwd.其显示的位置就是在页面的 @Html.ValidationMessageFor(model => model.ComfirmPwd)这个地方。如果没有这行代码也就验证不了的。另外注意这个是在和上面的Pwd的内容做比较哦。
[Compare("Pwd",ErrorMessage = "再次输入的密码不一致")] public string ComfirmPwd { get; set; }
还有一种,我知道的就是用 ModelState,我个人的理解就是其相当于一个字典,可以向其中加入键值对的数据,其方法是:ModelState.AddModelError("这里填写key", "这里填写错误消息,也就是value");然后在View那边就用“@Html.ValidationMessage(key)”显示错误信息,如果有用RAZOR引擎的话。我倒没怎么用过这个方法,我一向将key写成空,然后在View那边验证的话就是用的"@Html.ValidationSummary(true)"来显示错误消息。比如看一下我以前写的一个OA的例子。
//这里是控制器的代码,部分代码省略。 DateTime startTime = DateTime.Parse(dl); DateTime nowTime = DateTime.Now; DateTime newTime = startTime.AddDays(4); //if (newTime < nowTime) if(nowTime>newTime) { ModelState.AddModelError("", "错误提示:超过三天,不能申请"); BindHourMinuter();//这行代码有什么作用?绑定时间! return View(leaves); }
//依旧是部分代码,这里是Create里的代码。 </table> <p> <input class="submit ui-state-default ui-corner-all" type="submit" value="创建" /> @Html.ActionLink("返回列表", "Index") </p> <tr> @* 成功修改于0415d*@ <p> @Html.ValidationSummary(true)//错误消息将在此处显示。返回列表的下面,和下面的效果图对比一下吧。 </p> </fieldset>
效果:
我所知道的MVC的验证方式了也就这么点。希望园友们感兴趣的园友们指点指点,共同进步。另外有两个问题,如果园友有知道的可以告之一下,我们发现我OA的那个项目中,提示的颜色是红的,那么,怎么在第写的第一个事例中也将其验证消息改为红色呢。第二个,依旧和第一个事例有点关,就是说我这里有一个类,里面有一些属性,是用的MODELFIRST,我想这这个里面加上一些验证,后来又改了下模型,然后重新生成了一下T4模板,然后,打的特性就全部都没有了,关于这个问题是应该怎么解决呢。
相关文章推荐
- 关于GridView中自定义分页、单选、多选、排序、自增列的简单应用(转,非常的棒)
- 大家都知道π=3.1415926……无穷多位, 历史上很多人都在计算这个数, 一直认为是一个非常复杂的问题。现在有了电脑, 这个问题就简单了。
- 关于ASP.NET MVC的业务逻辑验证(validation)
- 比ISA更简单的监管利器,谈谈关于公司上网监管的一点事儿
- 关于距离一点简单的看法
- 关于DataRow和DataColumn的一点个人简单理解
- 关于wince核心的一点认识(未验证)
- 关于Spring中Commons Validator的使用说明及MVC验证的配置步骤
- 在ASP.NET MVC Framework 中执行简单验证(翻的)
- 关于Excel中的F2键(知道了,会对Excel的操作非常方便)。
- 关于编写通用脚本验证的一点思路
- 关于DataRow和DataColumn的一点个人简单理解
- 关于Flex-Mvc的几个框架的简单介绍
- 关于破解网络验证的一点心得
- 关于DataReader 非常重要的一点
- 强烈推荐,非常好的一篇关于call/cc的文章,非常简单的英文。
- 关于MVC的一点启示
- 关于DataRow和DataColumn的一点个人简单理解
- 《ASP.NET MVC验证框架中关于属性标记的通用扩展方法》之继续扩展
- 关于MVC权限控制的一点小想法