ASP.NET MVC5添加验证(4)
有时我们的网站需要添加验证。在本节中,我们将演示如何使用ASP.NET MVC5添加验证。
1.在模型类中添加验证,代码如下:
公共类Movie { public int ID { get设置;} [stringlength (60,minimumlength=3,errormessage='主题的长度必须为3到60个字符')]公共字符串Title { get设置;}[显示(名称='发布日期')][数据类型(数据类型。date)][display format(data format string=' { 0: yyyy-MM-DD } ',ApplyFormatInEditMode=true)]public DateTime release date { get;设置;}[regularexpression(@'^[a-z][a-za-z ' '-' \ s]* $ ')][必需] [StringLength(30)]公共字符串流派{ get设置;}[范围(1,100)][数据类型(DataType。货币)])公共十进制价格{ get设置;}[regularexpression(@'^[a-z][a-za-z ' '-' \ s]* $ ')]公共字符串评级{ get设置;}}此StringLength属性设置最大字符串长度并限制数据库,因此数据库结构会发生变化。在数据库结构没有改变之前,我们先来看一下定义
2.请看图片:
3.在上图中,可以看到所有的字符串字段都是NVARCHAR (MAX)。我们将使用数据库迁移技术来更新表结构,打开包管理器控制台,并输入以下指令:添加-迁移数据注释更新-数据库。该指令完成后,VS打开生成的迁移文件。在up方法中,您可以看到添加的数据库约束:
4.请看图片:
5.接下来,让我们再次打开数据库,看看数据表结构发生了什么变化:
6.
此验证属性指定要应用于模型的属性。Required和MinimumLength属性表示必须有一个值,但是它不会阻止用户输入一个空格来满足这个验证。正则表达式属性用于限制可以输入的字符。在上述代码中,“流派”和“评级”字段只能是字母,(不允许使用空格、数字和其他特殊字符。),Range属性将值约束在某个范围内,StringLength属性允许您设置字符串的最大长度和值的类型(例如;十进制、整数浮点、日期时间)都是内部需要的,但是对于必需的,它们不是必需的。代码优先确保在保存数据库数据之前,可以验证您在模型中指定的验证。例如,以下代码将在调用SaveChanges时引发错误,因为缺少一些必需的字段。
MovieDBContext db=new MovieDBContext();电影电影=新电影();电影。Title=《飘》;db。电影.添加(电影);db。saveChanges();//=将引发服务器端验证异常7。数据验证是通过。NET Framework,这样可以让你的程序更加健壮,而且还会保证你不会忘记验证一些,并且不会故意更新坏数据到数据库。
8.让我们开始验证并运行项目;
单击此新链接添加新电影。输入非法数据,然后查看错误。
注意:要支持使用逗号(“,”)作为小数点的非英语区域设置的jQuery验证,您必须按照本教程前面的描述包含NuGet globalize
注意:表单自动使用红色边框突出显示要验证的文本框中的错误数据。错误消息显示在其旁边。(PS:我这里省时间,大致翻译一下就行,大致意思翻译一下就行。真正的优势是,您不必为了使用验证UI而更改控制器或视图页面中的代码、控制器和视图页面,并捕获您在前面的Model类中编写的验证规则。测试验证,我们使用编辑方法,这个验证也适用于编辑功能。除非客户端没有错误的身份验证机制,否则表单数据不会提交给服务器。可以在浏览器中按F12,在Post方法中设置断点进行调试。
10.验证如何出现在视图和方法中:
您可能会想,这个接口的验证是如何在不修改控制器和视图的情况下生成的。下面的代码是控制器的代码,它是您之前创建的,没有任何修改
公共操作结果创建(){返回视图();} //POST: /Movies/Create //为了防止过载攻击,请启用您想要绑定到的特定属性,有关//更多详细信息,请参见http://go.microsoft.com/fwlink/? LinkId=317598。[httpset][validateantforgerytoken]公共操作结果创建([Bind(Include='ID,Title,ReleaseDate,Genre,Price,Rating')]电影电影){ if (ModelState。IsValid) { db。电影.添加(电影);db。saveChanges();返回RedirectToAction(' Index ');}返回视图(电影);}
第一个创建方法(HTTP GET)显示初始数据,第二个创建方法处理表单的提交。第二个创建方法调用这个模型状态。IsValid检查电影实体中是否有任何数据未通过验证。通过调用ModelState。IsValid,可以判断是否有验证属性作用于对象。如果此对象中存在验证错误,此Create方法将再次显示表单,如果没有错误,数据将保存到数据库中。在我们的示例中,当客户端身份验证出错时,表单的数据将不会提交给服务器。永远不会调用第二个Create方法。如果禁用浏览器的javascript,客户端的身份验证将失败,然后Post模式下的Create方法将调用ModelState。检查是否有任何未经验证的电影实体是有效的。
11.下面显示的代码用于在验证失败时显示错误消息:
12.直接看代码:
使用系统;使用系统。集合。通用;使用系统。Linq使用系统。Web使用系统。数据.实体;使用系统。组件模型。数据注释;命名空间MvcMovie。模型{公共类Movie { public int ID { get设置;} [stringlength (60,minimumlength=3,errormessage='主题的长度必须为3到60个字符')]公共字符串Title { get设置;}[显示(名称='发布日期')][数据类型(数据类型。date)][display format(data format string=' { 0: yyyy-MM-DD } ',ApplyFormatInEditMode=true)]public DateTime release date { get;设置;}[regularexpression(@'^[a-z][a-za-z ' '-' \ s]* $ ')][必需] [StringLength(30)]公共字符串流派{ get设置;}[范围(1,100)][数据类型(DataType。货币)])公共十进制价格{ get设置;}[regularexpression(@'^[a-z][a-za-z ' '-' \ s]* $ ')]公共字符串评级{ get设置;} }公共类MovieDBContext : db context { public DbSetMovie Movies { get;设置;} } }13.
DataType属性只是提示视图引擎格式化数据。您可以使用正则表达式属性来验证格式化数据。数据类型不是一个验证属性,它类似于数据库,只是指定了数据类型。数据类型枚举类型并提供许多数据类型,如日期、时间、电话号码、货币、电子邮件地址等。DataType属性还可以确保程序可以创建一些特殊类型,例如amalito:Link,它可以用来创建DataType。电子邮件地址。数据类型不提供任何验证。
数据类型。日期不能指定要显示的格式化时间。默认情况下,它基于服务器中的时间。
[display format(data format string=' { 0: yyyy-MM-DD } ',ApplyFormatInEditMode=true)]公共日期时间注册日期{ get设置;}14.
在文本编辑模式下,应用格式编辑模式属性。(您可能不希望这种情况应用于货币类型字段,因为您不希望货币类型字段处于文本编辑模式。)此时,您可以使用DisplayFormat,但更好的方法是使用DataType,它提供了几个好处。浏览器支持HTML5功能。默认情况下,浏览器将在您的本地计算机上正确显示数据
数据类型属性可以确保MVC选择正确的字段并显示数据(显示格式使用字符串模板)。有关更多信息,请参见。如果您使用数据类型属性,您必须指定显示格式属性,以确保数据可以在谷歌浏览器上正确显示。jQuery验证不支持Range和DateTime属性,即使指定了特定的范围,它仍然会报告客户端的验证错误
看看代码:
[范围(日期时间的类型),' 1966年1月1日',' 2020年1月1日']
以上是ASP.NET MVC 5增加验证的方法,希望对大家的学习有所帮助。
版权声明:ASP.NET MVC5添加验证(4)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。