最近悟出來乙個道理,在這兒分享給大家:學歷代表你的過去,能力代表你的現在,學習代表你的將來。
十年河東十年河西,莫欺少年窮
學無止境,精益求精
最近在做自學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,用於提交
@2、indexdeatail.cshtml,用於展示提交的資料@using weixinapi.models
@model person
@執行結果如下:@using weixinapi.models
@model person
"height:15px; clear:both;
">
@model.pname
@model.p***
@model.page
@model.paddress
現在我們將person作如下修改,改為復合型別:
public控制器方法不變,view作如下變化:class
person
//姓名public
string p*** //
性別public
int page //
年齡public
string paddress //
位址public card cardinfo //
銀行卡資訊
}
public
class
card
//所屬銀行
public
string cardnum //
賬號 }
執行結果如下:
當然,我們如果不採用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.如果要...