mvc3下进行部分更新,如何避免Modelmvc登录验证方式

客户端mvc登录验证方式主要是为了提高用户体验在网页不回刷的情况下完成mvc登录验证方式。

第一步是要在web.config里启用客户端mvc登录验证方式这在MVC3自带的模板项目中已经有了:

嘫后在被mvc登录验证方式的View页面上要加入这样两个JavaScript,注意他们是依赖于jQuery的:

mvc登录验证方式消息的显示有两种,一种是ValidationSummary它可以显示一份mvc登錄验证方式消息的汇总,包括从后台Action里返回的消息

另一种是Model中各属性对应HTML控件的mvc登录验证方式消息:

二、在Model中加入mvc登录验证方式标记

MVC3项目模板自带的登录模型类如下:

对比普通的C#类,我们发现每个属性上都多了被方括号“[]”包围的标记其中,[Required]是mvc登录验证方式标记的一种而[Display]、[DataType]则是为了显示对应的HTML控件,这不在本文讨论范围之内

除了Required,我们还可以在Model中添加其他有用的mvc登录验证方式标记下面是个较完整嘚列表:

Model类中可以添加的mvc登录验证方式标记:

5. 服务端参与的mvc登录验证方式

三、后台Action的写法

Action里要做的有两件事:判断ModelState是否合法、添加错误消息。MVC3模板自带的登录Action如下:

[HttpPost]表示这个Action只能通过POST动作调用这是为了配合View里的表单,因为FORM的ACTION是POST(当然也可以是GET)不过这不在本文的讨论范圍内。

if (ModelState.IsValid) 是重点如果不出意外,即客户端浏览器没有关闭javascript并且客户不是个黑客(黑客可能会通过一些工具模拟POST),那只要通过正常途径 POST箌这个Action的Model都应该是IsValid的当然,编程的一个重要原则是不能相信用户的输入所以我们有必要再判断一次 ModelState.IsValid。

最后附上常用正则表达式(网上找的)

由26个大写英文字母组成的字符串:"^[A-Z]+$"

由26个小写英文字母组成的字符串:"^[a-z]+$"。

由数字、26个英文字母或者下划线组成的字符串:"^\w+$"

mvc登录验證方式用户密码:"^[a-zA-Z]\w{5,17}$"正确格式为:以字母开头,长度在6~18之间只能包含字符、数字和下划线。

在MVC 3中 数据mvc登录验证方式已经应鼡的非常普遍,我们在web form时代需要在View端通过js来mvc登录验证方式每个需要mvc登录验证方式的控件值并且这种mvc登录验证方式的可用性很低。但是来箌了MVC 新时代我们可以通过MVC提供的数据mvc登录验证方式Attribute来进行我们的数据mvc登录验证方式。并且MVC 提供了客户端和服务器端 双层的mvc登录验证方式只有我们禁用了客户端js以后,也会执行服务端mvc登录验证方式所以大大提高了我们的开发进度。今天我们就一起以一个初学者的身份来進入数据mvc登录验证方式的殿堂

首先,要使MVC 数据mvc登录验证方式在客户端生效我们必须导入必要的js库。其中我在一篇博客中专门介绍了通過jquery.validate.js进行链式mvc登录验证方式的方式 

 

然后我们就需要添加对应的Model ,其实在MVC中Model层对应的不一定是实体类还可以是领域模型。这个区别还是存茬的我们添加一个简单的User类,

在Model 层UserInfo类中我们定义了一个User应该具有的属性,以及需要为每个属性添加的不同mvc登录验证方式设置好了Model,峩们就需要通过Controller来显示对应的View层

其实Controller不需要做任何的处理,只需要选择一个合适的View进行页面显示最重要的是在View层。

我在View层中定义了两種显示Model数据的方式一种是通过html.EditorFor(model)来分别显示每个不同的属性,另外一个简洁的方式就是通过html.EditorForModel()进行这个方法会提供错误信息显示等。

Model 、View、Controller嘟设置好了下面我们来看一下最终运行的效果。

在效果图中我们看到了两个相同的部分,这是我采用两个不同的显示方式显示的效果其中有两个Age,这两个只要一个mvc登录验证方式通过就会mvc登录验证方式通过。根本原因就是它们的ID值是相同的

看到了实际效果,我们来逐个分析一下每个mvc登录验证方式Attribute的实现方式 极其注意方式

Required 必填项 表示的是这个字段值是必填的。

Display  字段显示的名称  表示该字段显示的是Name值而不是字段本身的名称

StringLength 表示的是mvc登录验证方式字符串的长度。我们可以设置最小长度和最大长度如果不在这个范围内,则会提示错误信息

其中我们看到ErrorMessage中有占位符存在其实这个占位符很容易理解,就是{0}表示的是字段本身的名称{1}表示它前面的第一个参数,{2}表示它前面嘚第二个参数

ScaffoldColumn  表示的是是否采用MVC框架来处理 设置为true表示采用MVC框架来处理,如果设置为false则该字段不会在View层显示,里面定义的mvc登录验证方式也不会生效

Remote  表示的是进行远端mvc登录验证方式,这个相当于我们采用ajax方式来异步的请求服务器并返回信息。最常用的就是mvc登录验证方式用户名是否重复下面这个mvc登录验证方式是异步调用ValidateController下面的User Action 并且返回结果为json值。

 

DataType 表示的是字段的数据类型 这个会影响到字段在View层的显示效果如果设置为password,则输入时会用*替换

RegularExpression 正则表达式mvc登录验证方式。正则表达式我曾经在我的一篇博客中有所介绍正则表达式是mvc登录验證方式字符串的利器,我们必须掌握的前面是mvc登录验证方式模式,后面是出错显示的错误信息

Compare  比较两个字段值是否相同,这个如果我們采用js进行mvc登录验证方式的话最少需要三行,这还只是客户端mvc登录验证方式那么在MVC中就比较容易实现了。

在Compare mvc登录验证方式中有一个地方需要注意就是第一个参数,它是另一个字段的名称我们一定要注意大小写正确,如果错误的话mvc登录验证方式就不会通过的。

Range 表示嘚大小数据的大小mvc登录验证方式这个Attribute可以mvc登录验证方式int,doubledecimal等数据类型的值的大小范围。 表示的是在10和100之间包括10和100

ReadOnly 表示字段是否只读。 这个在View层我有时测试会没有执行具体原因还未知。

DisplayFormat 表示的数据显示的样式其实这个不属于数据mvc登录验证方式特性,而应该属于数据格式如果要启用格式设置,第一个参数一定要设置为true第二个就和我们toString()方法后面的参数一样。

我们可以使用MVC提供的各种mvc登录验证方式特性那么我们是否可以自己来定义自定义特性mvc登录验证方式呢。MVC有着巨大的可扩展性我们也可以自己进行扩展,有两种扩展方式┅种就是可以重复使用的和MVC框架中mvc登录验证方式,只要继承自ValidationAttribute 就可以实现重复使用的mvc登录验证方式特性另一种就是内包含的模式,它是呮mvc登录验证方式特定的Model继承自IValidatableObject可以实现字包含的mvc登录验证方式。

MVC mvc登录验证方式特性提高了我们开发的效率以及稳定性值得我们学习。還是那句话每天学一学,自己常进步世界更美好。

 MVC 的mvc登录验证方式扩展特性 以及全球化我们在以后有机会在一起学习。

点击后发现textboxfor中的值并没有改变,但是model的值其实已经改变了

之类的方法。但是也存在一些风险比如把mvc登录验证方式的错误信息也清除了。

但是这种方法并不安全因為如果是clear方法可能会清空ModelState中mvc登录验证方式信息。而且刷新页面的时候也会有重复提交的风险。

改成如下方式把post方式转换成get方式,这样僦避免了刷新时候会弹出重复提交的按钮用TempData或者Session作为临时保存数据。

我要回帖

更多关于 mvc数据验证 的文章

 

随机推荐