體驗Asp.Net Mvc Preview5(3)-探索ModelBinder的工作原理

來源:互聯網
上載者:User

在前面的兩篇文章中,我們研究了Asp.Net Mvc Preview5的ViewEingine的改進,從本篇開始,我們開始研究Preview5中的新特性:ModelBinder.

首先我們來瞭解下什麼是ModelBinder特性,這有什麼用處,在以前的版本中,如果我們要在Action中擷取資料,一般有三種方式,一是通過Action的參數,但是由於某些原因,這兒只能擷取到簡單類型的參數,比如int,string等,第二種方式是通過Request來擷取,但是當資料較多的時候,這個方式實在太費勁了.三是使用BindingHelperExtensions中的擴充方法,但是這種方式還是不能滿足我們的要求.我們理想中的方式是:

如果能這樣寫,將直接能在參數中方便擷取傳入對象.會使得程式的結構更加合理.在新版中,架構引入ModelBinder來解決了這個問題,使得我們理想中的效果得以實現.

ModlBinder的作用就是建立一種html參數和對象的轉換關係,可以通過系統內建或者使用者添加的Binder來完成轉換過程,每當Action中含有參數的時候,系統會自動查詢url或者表單中是否含有相應的值,然後調用一定的ModelBinder對象來將參數轉化成傳入的值.

下面我們來分析下ModelBinder的工作過程.我們知道,Action的執行實際上實在ControllerActionInvoker中進行的,這個類中提供了一些方法,在執行的過程中,它首先找到Controller中Action對應的Method,然後判斷Method是否帶有參數,如果有參數,將使用特定的方式來對這些參數賦值.這部分具體的代碼我們弄出來瞧瞧:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.