日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第三章 Models详解

發布時間:2024/9/20 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第三章 Models详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

摘自:http://www.cnblogs.com/xdotnet/archive/2012/03/07/aspnet_mvc40_validate.html

Model的概念

  萬丈高樓平地起,先理解概念才能更好的使用。

  百度百科的解說:在MVC(模型Model-視圖View-控制器Controller)模式中,Model代表模型,是業務流程/狀態的處理以及業務規則的制定,接受視圖請求的數據,并返回最終的處理結果。

  數據是由Model提供的,但不是指局部變量、全局變量或常數這樣的數據,而是指程序外部所提供的數據。外部數據,包含數據庫、文件、web service等,都是可以算是model。

  Model的類型

  按ASP.NET MVC的分類方法:DomainModel、ViewModel、InputModel

  按領域驅動設計,分為三類:entity、ValueObject、Service (程序和動作)

  

Model驗證

了解了這些就可以對MVC進一步認識,相信很多人都對MVC中三個模塊有一定的認識。今天我們主要來看一下Models模塊,這個和我們三層里用的 實體類有點相似,不同的是這里的屬性需要添加一些驗證屬性(Attribute)或其他的一些Filter(過濾器)。在MVC中驗證屬性主要包含在 System.ComponentModel.DataAnnotations.dll程序集中,所以需要對其添加引用。

?

首先我們先看一下注冊模型的代碼,然后對其中使用到的驗證屬性等進行進一步的認識,代碼如下。

?1?public?class?RegisterModel
?2?????{
?3?????????[Required]
?4?????????[Display(Name?=?"User?name")]
?5?????????public?string?UserName?{?get;?set;?}
?6?
?7?????????[Required]
?8?????????[DataType(DataType.EmailAddress)]
?9?????????[Display(Name?=?"Email?address")]
10?????????public?string?Email?{?get;?set;?}
11?
12?????????[Required]
13?????????[StringLength(100,?ErrorMessage?=?"The?{0}?must?be?at?least?{2}?characters?long.",?MinimumLength?=?6)]
14?????????[DataType(DataType.Password)]
15?????????[Display(Name?=?"Password")]
16?????????public?string?Password?{?get;?set;?}
17?
18?????????[DataType(DataType.Password)]
19?????????[Display(Name?=?"Confirm?password")]
20?????????[Compare("Password",?ErrorMessage?=?"The?password?and?confirmation?password?do?not?match.")]
21?????????public?string?ConfirmPassword?{?get;?set;?}

?

一、RequiredAttribute屬性

?使用這個標記的屬性表示必須,如果客戶端返回的數據中沒有設置此項,則在ModelState.IsValid屬性將為false。錯誤信息將會包含在ModelState對象里,客戶端就可以通過@Html.ValidationMessageFor來顯示模型屬性驗證錯誤信息。讓我們打開VS11自帶的Internet Application項目,并使用Page Inspector來調試程序,雙擊注冊按鈕,我們就可以看到這個驗證的相關信息,如下圖所示。

?

?在圖中就可以看到這個注冊模型RequiredAttribute驗證標記的驗證信息,在input標記中的data-val-required 屬性呈現的是嚴重信息,這些屬性都是微軟擴展的供JQuery和其驗證擴展庫使用。如果你對客戶端驗證感興趣可以研究一下Scripts目錄下的 “jquery.validate.js”和“jquery.validate.unobtrusive.js”,這樣你就會知道他是如何工作的了。

?

二、DisplayAttribute屬性

?這個屬性主要用于前臺顯示時的字符串,比如注冊模型中的UserName屬性在前臺顯示的就是“User name”,從上面圖片中的HTML代碼中就可以看出來。當然我們也可以把它改成“用戶名”,這樣執行后就不會顯示英文了。

?

三、StringLengthAttribute屬性

?這個屬于驗證屬性,用于判斷當前屬性字符串長度,可以用設置最小值和最大值。這個比較少用,我做過的項目只有在密碼上回用這個,其他一般會給正則表達式進行驗證。

?

四、CompareAttribute屬性

?這個驗證屬性主要用于對比兩個屬性的值是否相同,一般用于密碼和確認密碼,因為這兩個是要一樣的。

?

五、RegularExpressionAttribute屬性?
?這個屬性將使用參數里設置的正則表達式來驗證當前屬性是否合法,這個我會比較常用,像用戶注冊等等都會對其進行驗證。

?

六、RangeAttribute屬性

?這個屬性為范圍區間驗證,可以是數字,也可以是對象,需要指定最小值和最大值,如果不是數字還需要指定對比的類型。

?

七、RemoteAttribute屬性

?這個屬性實現了遠處驗證,參數主要是設置服務端的控制器和方法名稱,比如我們的要驗證注冊模型中的UserName是否已經被注冊,就可以使用這個Remote屬性。

總結

以上是生活随笔為你收集整理的第三章 Models详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。