Asp.Net MVC中的RenderPartial 和 RenderAction 【转】
在Asp.Net MVC中要實現某個功能可以通過許多種方式,今天我們就來討論下使用RenderPartial和RenderAction在視圖中呈現部分內容之間的區別。
比如我們要呈現如下的圖所示的內容
一般的情況下,我們可能需要在母板頁中頁中呈現此內容以保證該內容可以在每個使用該模板的視圖中顯示,并且這些內容需要結合具體的業務邏輯。上圖所示的內容我們是在用戶控件中生成的,這樣做便于該內容與母板頁或者具體的視圖相分離。我們至少有兩種方式來呈現這些內容。這里我們只討論通過RenderPartial和RenerAction的方式呈現的區別以及斟酌權衡使用它們的利弊。
方式1:使用Html.RenderPartial方法(Asp.Net MVC Preview5 加入的新方法)
一個簡單的例子
<% Html.RenderPartial( "SomeControl.ascx", ViewData.Model ); %>可以看到,這個方法通過接受用戶控件的文件名以及相應的可變化的數據進行用戶控件的呈現
讓我們看看使用這種方式的優點及缺點
- 優點
- 使用簡單,不需要建立任何action
- 缺點
- 必須填寫具體的用戶控件文件路徑而使視圖得以呈現內容
- 視圖需要為另外一個視圖提供數據,即
- 視圖需要承擔組織實體數據的任務,而這恰恰應該是業務邏輯需要做的事情
- 由于上文所述的視圖提供數據的特點,你可能會跳過控制器而直接向服務層甚至數據庫發出請求。
方式2:使用Html.RenderAction方法
另外一種呈現用戶控件內容的方式和一般情況下呈現視圖的方式相同,即通過控制器決定呈現哪個具體的用戶控件內容。RenderAction方法可以靈活的通過控制器選擇呈現特定的視圖、用戶控件或部分內容。
一個簡單的例子
<% Html.RenderAction<MyController>( x => x.ControllerAction() ); %>- 優點
- 讓控制器做它該做的事情:組織邏輯及與業務邏輯之間的通信。
- 將實際使用的視圖/用戶控件抽象出來,便于未來的重構。
- 將控制器中的業務邏輯抽象出來,這也讓你的業務邏輯可以專心做它該做的事。
- 使用lambda表達式,強類型
- 缺點
- 必須新建一個action處理請求
Ok,have fan~
轉載于:https://www.cnblogs.com/cxd4321/archive/2009/09/28/1575509.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Asp.Net MVC中的RenderPartial 和 RenderAction 【转】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: httpWebRequest和webRe
- 下一篇: .net读写 更新 删除(操作)xml文