“模型”是軟件發(fā)展歷史上被人誤解最深的概念,通常存在至少兩種完全不同的模型:領(lǐng)域模型和視圖模型。領(lǐng)域模型描述在中間層使用的數(shù)據(jù),預(yù)期會(huì)為填充業(yè)務(wù)領(lǐng)域的實(shí)體和關(guān)系提供可靠的表示。這些實(shí)體一般通過(guò)數(shù)據(jù)訪(fǎng)問(wèn)層來(lái)持久保存,并通過(guò)實(shí)現(xiàn)業(yè)務(wù)流程的服務(wù)來(lái)使用。領(lǐng)域模型推動(dòng)了數(shù)據(jù)的可視化,通常會(huì)使其更為鮮明,但同時(shí)可能與在表示層的可見(jiàn)數(shù)據(jù)不同。視圖模型只描述表示層中正在處理的數(shù)據(jù)。
輸入模型
ASP.NET MVC強(qiáng)調(diào)用控制器接收而不是檢索輸入數(shù)據(jù),要將輸入數(shù)據(jù)傳遞給控制器,需要以某種方式把數(shù)據(jù)封裝起來(lái)。這正是輸入模型發(fā)揮作用的時(shí)候。
ASP.NET MVC提供了自動(dòng)綁定層,使用一組內(nèi)置的規(guī)則將原始請(qǐng)求數(shù)據(jù)從任何一個(gè)值提供程序映射到輸入模型類(lèi)的屬性。
輸入模型提供正在提交到控制器的數(shù)據(jù)的表示,視圖模型提供了正在視圖中進(jìn)行處理的數(shù)據(jù)的表示。最后,領(lǐng)域模型是在中間層中操作的域特定實(shí)體的表示。
模型綁定
模型綁定是指將通過(guò)HTTP請(qǐng)求所提交的值綁定到控制器方法所有的參數(shù)的過(guò)程。
模型綁定邏輯是封裝在一個(gè)特定模型綁定器類(lèi)中的,綁定器在操作調(diào)用程序的控制下工作,并幫助找出要傳遞給所選擇的控制器方法的參數(shù)。
對(duì)于每個(gè)參數(shù),調(diào)用程序都回獲得一個(gè)模型綁定器對(duì)象。模型綁定器是一個(gè)知道如何從請(qǐng)求上下文查找指定類(lèi)型的值的組件。
為類(lèi)型獲取綁定器