ASP.NET MVC 3.0学习系列文章—Model in ASP.NET MVC 3.0
系列文章
ASP.NET MVC 3.0學(xué)習(xí)系列文章—序
ASP.NET MVC 3.0學(xué)習(xí)系列文章--Razor and ASP.NET MVC 3.0
ASP.NET MVC 3.0學(xué)習(xí)系列文章—Controllers in ASP.NET MVC 3.0
ASP.NET MVC
3.0學(xué)習(xí)系列文章--Dependency Resolution in ASP.NET MVC 3.0?
?
這篇文章主要介紹如下基本分內(nèi)容:
??
1. Introduction:
在ASP.NET MVC 3.0中, Model模塊主要是在Validation這部分有很大的增強(qiáng)。包括ASP.NET MVC開(kāi)發(fā)團(tuán)隊(duì)自己寫(xiě)的使用jQuery來(lái)進(jìn)行客戶端驗(yàn)證的jquery.validate.unobtrusive.js,以及Remote validation等。剛才在園子看到一個(gè)同學(xué)寫(xiě)了一篇文章介紹了Remote validation,寫(xiě)的挺詳細(xì)的,大家可以看看。
http://www.cnblogs.com/serafin/archive/2011/01/25/1944848.html
我也會(huì)在這篇文章中稍微給大家介紹如何使用remote 驗(yàn)證。
總的來(lái)說(shuō)ASP.NET MVC 3.0中的Validation主要的改動(dòng)有如下三個(gè)方面:
a.New attributes b. New interfaces, c. Improved client validation story.
?
2. Validation in MVC 3
在驗(yàn)證方面分為如下幾部分:
??
3.Data Annotations
微軟的的System.ComponentModel.DataAnnotations就是一個(gè)好的驗(yàn)證方法集合。
你可以看看它主要包含的類(lèi):
從它包含的這些方法中可以看出它主要是用來(lái)做字段的驗(yàn)證。在ASP.NET MVC或者是Silverlight中微軟都是使用它來(lái)做數(shù)據(jù)的合法性驗(yàn)證。當(dāng)然,在ASP.NET MVC 3.0中結(jié)合jQuery的客戶端驗(yàn)證,使Data Annotation發(fā)揮的功能更加完美。
??
4.Custom Validation Attributes
在上面的System.ComponentModel.DataAnnotations命名空間中,有ValidationAttibute這個(gè)類(lèi),所有的attribute類(lèi)型的驗(yàn)證方法所在的類(lèi)都繼承了它。
比如:
上圖中的Required和StringLength,我們看看它們的所在的類(lèi):
這么看來(lái)我們可以自定義Validation類(lèi),它也繼承ValidationAttribute。
自定義類(lèi)的結(jié)構(gòu)如下:
??
我們現(xiàn)在自定義一個(gè)驗(yàn)證,來(lái)驗(yàn)證輸入的時(shí)間是否是在合法的范圍呢。
當(dāng)你輸入的時(shí)間不是在當(dāng)前月的前6各月內(nèi)或者是大于當(dāng)前時(shí)間7天,就給出提示信息。
?
5.Self Validation models
這種方式是在model中來(lái)結(jié)合 ValidationContext和ValidationResult來(lái)提供驗(yàn)證。
?
例如我們的model中有一個(gè)startdate和一個(gè)enddate字段,要求輸入的enddate不能小于startdate,那么我們可以使用Self validation model這種驗(yàn)證模式:
運(yùn)行結(jié)果:
?
?
上面兩種驗(yàn)證方式都是需要整個(gè)Form提交數(shù)據(jù)時(shí)post數(shù)據(jù),大家估計(jì)都不可能接受,所以ASP.NET MVC團(tuán)隊(duì)在ASP.NET MVC 3中添加了下面兩種驗(yàn)證方式,
Client Validation和Remote Validation。
?
6.Client Validation:
明眼人都會(huì)發(fā)現(xiàn),Microsoft這幾年和jQuery團(tuán)隊(duì)走的很近,ASP.NET MVC項(xiàng)目中更是使用了jQuery來(lái)實(shí)現(xiàn)客戶端驗(yàn)證。
很欣慰的是微軟終于放棄了之前自己的AJAX庫(kù)。。。。。
在使用jQuery的AJAX認(rèn)證,需要注意如下幾點(diǎn):
1.Web.Config中添加設(shè)置:
?
2.添加js文件:
3.在Html.FormBegain之前添加:
?
我這里有個(gè)例子,大家可以看看使用jquery.validate.unobtrusive.mis.js后,客戶端生成的html有什么區(qū)別:
本身html的節(jié)點(diǎn)中就有了驗(yàn)證信息。
?
7.Custom Client Validation
ASP.NET MVC團(tuán)隊(duì)提供的這個(gè)客戶端驗(yàn)證方式也是個(gè)擴(kuò)展性非常強(qiáng)的。
?
例子如下:
?
8.remote validation:
remote validation部分我就不作說(shuō)明了,文章夠長(zhǎng)了。。。。。
大家可以看看http://www.cnblogs.com/serafin/archive/2011/01/25/1944848.html 。
我個(gè)人覺(jué)得這個(gè)remote validation的原理就是實(shí)時(shí)向某個(gè)Action Post數(shù)據(jù),然后再看返回結(jié)果是否為空,不為空就顯示Validation Message。主要還是使用了jQUery的ajax。
?
Nick
轉(zhuǎn)載于:https://www.cnblogs.com/n-pei/archive/2011/01/26/1945018.html
總結(jié)
以上是生活随笔為你收集整理的ASP.NET MVC 3.0学习系列文章—Model in ASP.NET MVC 3.0的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: thinkcmf安装模板需要点击右键打开
- 下一篇: 初学 ASP.NET AJAX (一):