ASP.NET MVC 3.0學習系列文章—Model in ASP.NET MVC 3.0

來源:互聯網
上載者:User

系列文章

ASP.NET MVC 3.0學習系列文章—序

ASP.NET MVC 3.0學習系列文章--Razor and ASP.NET MVC 3.0

ASP.NET MVC 3.0學習系列文章—Controllers in ASP.NET MVC 3.0

ASP.NET MVC
3.0學習系列文章--Dependency Resolution in ASP.NET MVC 3.0 

 

這篇文章主要介紹如下基本分內容:

  

1. Introduction:

在ASP.NET MVC 3.0中, Model模組主要是在Validation這部分有很大的增強。包括ASP.NET MVCTeam Dev自己寫的使用jQuery來進行用戶端驗證的jquery.validate.unobtrusive.js,以及Remote validation等。剛才在園子看到一個同學寫了一篇文章介紹了Remote validation,寫的挺詳細的,大家可以看看。

http://www.cnblogs.com/serafin/archive/2011/01/25/1944848.html

我也會在這篇文章中稍微給大家介紹如何使用remote 驗證。

總的來說ASP.NET MVC 3.0中的Validation主要的改動有如下三個方面:

a.New attributes b. New interfaces, c. Improved client validation story.

 

2. Validation in MVC 3

在驗證方面分為如下幾部分:

  

3.Data Annotations

微軟的的System.ComponentModel.DataAnnotations就是一個好的驗證方法集合。

你可以看看它主要包含的類:

從它包含的這些方法中可以看出它主要是用來做欄位的驗證。在ASP.NET MVC或者是Silverlight中微軟都是使用它來做資料的合法性驗證。當然,在ASP.NET MVC 3.0中結合jQuery的用戶端驗證,使Data Annotation發揮的功能更加完美。

  

4.Custom Validation Attributes

在上面的System.ComponentModel.DataAnnotations命名空間中,有ValidationAttibute這個類,所有的attribute類型的驗證方法所在的類都繼承了它。

比如:

中的Required和StringLength,我們看看它們的所在的類:

這麼看來我們可以自訂Validation類,它也繼承ValidationAttribute。

自訂類的結構如下:

  

我們現在自訂一個驗證,來驗證輸入的時間是否是在合法的範圍呢。

當你輸入的時間不是在當前月的前6各月內或者是大於目前時間7天,就給出提示資訊。

 

5.Self Validation models

這種方式是在model中來結合 ValidationContext和ValidationResult來提供驗證。

 

例如我們的model中有一個startdate和一個enddate欄位,要求輸入的enddate不能小於startdate,那麼我們可以使用Self validation model這種驗證模式:

運行結果:

 

 

上面兩種驗證方式都是需要整個Form提交資料時post資料,大家估計都不可能接受,所以ASP.NET MVC團隊在ASP.NET MVC 3中添加了下面兩種驗證方式,

Client Validation和Remote Validation。

 

6.Client Validation:

明眼人都會發現,Microsoft這幾年和jQuery團隊走的很近,ASP.NET MVC項目中更是使用了jQuery來實現用戶端驗證。

很欣慰的是微軟終於放棄了之前自己的AJAX庫。。。。。

在使用jQuery的AJAX認證,需要注意如下幾點:

1.Web.Config中添加設定:

 

2.添加js檔案:

3.在Html.FormBegain之前添加:

 

我這裡有個例子,大家可以看看使用jquery.validate.unobtrusive.mis.js後,用戶端產生的html有什麼區別:

本身html的節點中就有了驗證資訊。

 

7.Custom Client Validation

ASP.NET MVC團隊提供的這個用戶端驗證方式也是個擴充性非常強的。

 

例子如下:

 

8.remote validation:

remote validation部分我就不作說明了,文章夠長了。。。。。

大家可以看看http://www.cnblogs.com/serafin/archive/2011/01/25/1944848.html 。

我個人覺得這個remote validation的原理就是即時向某個Action Post資料,然後再看返回結果是否為空白,不為空白就顯示Validation Message。主要還是使用了jQUery的ajax。

 

Nick

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.