第三章 Models詳解

2022-01-11 13:10:13 字數 2472 閱讀 4928

摘自:

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

資料是由model提供的,但不是指區域性變數、全域性變數或常數這樣的資料,而是指程式外部所提供的資料。外部資料,包含資料庫、檔案、web service等,都是可以算是model。

按asp.net mvc的分類方法:domainmodel、viewmodel、inputmodel

按領域驅動設計,分為三類:entity、valueobject、service (程式和動作)

了解了這些就可以對mvc進一步認識,相信很多人都對mvc中三個模組有一定的認識。今天我們主要來看一下models模組,這個和我們三層裡用的 實體類有點相似,不同的是這裡的屬性需要新增一些驗證屬性(attribute)或其他的一些filter(過濾器)。在mvc中驗證屬性主要包含在 system.componentmodel.dataannotations.dll程式集中,所以需要對其新增引用。

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

1public

class registermodel

2     

67         [required]

8         [datatype(datatype.emailaddress)]

9         [display(name = "

email address

")]10

public

string email 

1112         [required]

13         [stringlength(100, errormessage = "

the  must be at least  characters long.

", minimumlength = 6)]

14         [datatype(datatype.password)]

15         [display(name = "

password

")]16

public

string password 

1718         [datatype(datatype.password)]

19         [display(name = "

confirm password

")]20         [compare("

password

", errormessage = "

the password and confirmation password do not match.

")]21

public

string confirmpassword 

一、requiredattribute屬性

在圖中就可以看到這個註冊模型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屬性。

動態規劃詳解 第三章

這一章,我們來學習樹形動態規劃。動態規劃一般來說分為四大類 線性動態規劃,區間動態規劃,樹形動態規劃和特殊種類動態規劃。因為線性模型和區間類模型緊密相關,所以一般我們將這兩種型別放在一起學習。樹形動態規劃和以上兩種不同,它是在乙個樹結構中進行的,因此具有一般性,而特殊種類動態規劃則包含比較廣,譬如狀...

tcp ip詳解 筆記 第三章

ip協議是tcp ip協議簇中最為核心的協議。所有的tcp udp icmp igmp資料都以ip資料報格式傳輸。而ip協議是不可靠的,因為ip僅提供最好的傳輸服務,也就是以最快速度 資料報,而資料報能不能到達終點,能不能按照傳送的順序到達終點都是不能保證的。圖為ip資料報格式及首部中的各欄位 本章...

第三章 堆疊

1.基礎知識 堆疊可以實現很多的應用,遞迴的問題轉化成非遞迴形式,在本質上也是堆疊的問題.它是一種 filo 操作的資料結構,一般也有兩種儲存方式 陣列跟鍊錶實現形式,這裡我給出了鍊錶形式的堆疊模板,裡面包括了基本的堆疊所有的操作,還有兩個比較著名的應用例子,時間倉促,精力比較有限,關於迷宮老鼠還沒...