MVC4之ModelBinder 模型繫結

2021-09-07 07:25:44 字數 3171 閱讀 3638

最近悟出來乙個道理,在這兒分享給大家:學歷代表你的過去,能力代表你的現在,學習代表你的將來。

十年河東十年河西,莫欺少年窮

學無止境,精益求精

最近在做自學mvc,遇到的問題很多,索性一點點總結下。

mvc modelbinder是mvc模型繫結的核心,本節以簡單示例講解mvc模型繫結,涉及到基本型別繫結和復合型別繫結兩種。

如下:做過webform專案的童鞋都知道,後端如果要接收前段html input標籤的值,必須採用request.form["key"]的方式,mvc自誕生以來,就擯棄了這種方式,使得程式更簡潔,減少了程式設計師的開發量及**量

model binder(模型繫結器),顧名思義,可以形象的理解為將資料繫結到乙個 model 的工具。這個 model 是 action 方法需要用到的某個型別(既可以是方法引數的型別也可以是方法內部物件的型別),要繫結到它上面的值可以來自於多種資料來源。

mvc 框架內建預設的 model binder 是defaultmodelbinder類。當 action invoker 沒找到自定義的 binder 時,則預設使用 defaultmodelbinder。預設情況下,defaultmodelbinder 從如下 4 種途徑查詢要繫結到 model 上的值:

request.form,html form 元素提供的值。

routedata.values,通過應用程式路由提供的值。

request.querystring,所請求 url 的 query string 值。

request.files,客戶端上傳的檔案。

defaultmodelbinder 按照該順序來查詢需要的值。

request.form["key"]

routedata.values["key"]

request.querystring["key"]

request.files["key"]

下面以簡單示例說明:

首先:我們在models下建立乙個person類,如下:

public

class

person

//姓名public

string p*** //

性別public

int page //

年齡public

string paddress //

位址}

其次:我們建立乙個控制器,如下:

}根據控制器,我們建立如下兩個view

1、index.cshtml,用於提交

@

@using weixinapi.models

@model person

2、indexdeatail.cshtml,用於展示提交的資料

@

@using weixinapi.models

@model person

"height:15px; clear:both;

">

@model.pname

@model.p***

@model.page

@model.paddress

執行結果如下:

現在我們將person作如下修改,改為復合型別:

public

class

person

//姓名public

string p*** //

性別public

int page //

年齡public

string paddress //

位址public card cardinfo //

銀行卡資訊

}

public

class

card

//所屬銀行

public

string cardnum //

賬號 }

控制器方法不變,view作如下變化:

執行結果如下:

當然,我們如果不採用modelbinder,我們也可採用如下【表單收集】方法進行接收資料:

}當然,用此方法就等於回到了webform了,不建議使用

除此之外,我們也可以採用webfrom的方法就行收集資料

如果想更深層次了解mvc modelbinder 建議參考老a的部落格:   

謝謝@陳臥龍的部落格

MVC4學習筆記(一) 認識MVC

mvc就是為了快速開發出乙個軟體專案,有多快了?你甚至可以在5分鐘內開發出乙個五臟俱全的軟體系統,一點也不假。mvc model view controller,模型 檢視 控制器模式 用於表示一種軟體架構模式。它把軟體系統分為三個基本部分 模型 model 檢視 view 和控制器 control...

MVC4程式執行報錯

近期了解mvc4的時候弄了乙個簡單的小工程,使用entity framework作為model,f5啟動除錯執行的時候沒有問題,但是發布到iis之後訪問就報錯 錯誤資訊如下 很奇怪,搜尋了一下,找到乙個老外的帖子,戳這裡 解決方案如下 首先檢查ef相關的程式集是否被引用,主要有兩個 entityfr...

MVC4 的簡單學習

1.html元件,提供很多有用的功能,html.textboxfor 這個是可以直接使用model中的東西的 2.2.remote特性,不好用,每次輸入,都要到後台去驗證,這個就有問題了,如果需要連庫查,肯定效能太差了,應該看一下怎麼回事 3和4都這個毛病 3.要詳細看看路由設定啊,很亂 4.如果要...