MVC5 EF6 入門完整教程六

2021-09-07 19:36:03 字數 3211 閱讀 6006

原文:

mvc5+ef6 入門完整教程六

本篇我們談談分部檢視(partial view)。

上篇文章提到過partial和action這兩個helper, 本篇文章主要就結合這兩個helper來講解分部檢視(partial view)的應用。

partial view指可以應用於view中以作為其中一部分的view的片段(類似於之前的user control), 可以像類一樣,編寫一次, 然後在其他view中被反覆使用。

一般放在"views/shared"資料夾中以共享。

建立partial view:一般直接右鍵"views/shared"資料夾新增分部檢視。

使用partial view有兩類helper :

html.partial / html.renderpartial

html.action / html.renderaction

大概五年前我開發過乙個iportal(類似於以前的igoogle,現在igoogle已經關閉), 其他類似的參考**:

裡面有乙個個可以自定義的widget,下面我們就開發乙個簡單的widget來說明partial view的用法。

如下圖,建立 _partialpagewidget.cshtml

我們做乙個簡陋的widget.

參考下面的圖,定義widget的html結構。

借用了bootstrap中panel的樣式,結構如下。

直接應用html.partial或html.renderpartial輔助方法比較簡單。

開啟之前建好的views/mvcdemo/index.cshtml檔案,新增如下內容:

顯示結果:

通過html.action/html.renderaction使用稍微複雜一點,分成兩步。

在要顯示的view所對應的controller中心增加乙個action.

還用上面這個頁面,我們在mvcdemocontroller.cs中增加乙個action

做個簡單的說明:

[childactiononly] 表示這個action只應作為子操作進行呼叫。也就是說直接通過 controller/action這樣的**是不能訪問的,會提示只能由子請求訪問的錯誤。

必須返回乙個partialview

在view中新增相關**

顯示結果和上一種方法一樣

當view中引用了乙個或多個分部檢視時,此view與各分部檢視預設得到一樣的資料,也就是說view及其中所有的partial view預設情況下共享view中的viewdata和viewbag.

需要使view和其中引入的partial view有不同的資料,需要通過html.action/html.renderaction輔助方法, 並在對於被呼叫的action中設定對應的資料。

另外還有幾點需要注意:

***和render***的區別在於,乙個是直接返回字串,另外乙個是直接寫入到相應輸出流,因此不能直接放在**表示式中,必須放在**塊中。

前面的示例中兩種寫法是等價的。render***有輕微的效能優勢,在大量的render***執行時,才能反映出效能上的優勢。

partial/renderpartial通常在單獨的資料夾中應用檢視標記來幫助view渲染檢視模型的一部分。

action/renderaction執行單獨controller中的action來顯示結果,提供了更多的靈活性,例如利用單獨的controller傳遞不同值。文章最後我們會舉個例子說明。

partial/renderpartial和action/renderaction的引數分別是 partialview和 action的名字。當然還有其他的過載函式,我們只說最常用的。應用時可以按照我們前面舉的例子。

最後我們舉個例子說明兩種用法的差別。

新建乙個partial view

controller中新建兩個action,shareddatedemo和partialviewdate.

根據shareddatedemo生成主view, partialviewdate供html.action呼叫

主view: shareddatedemo.cshtml分別顯示

主view的時間;

用html.partial呼叫partial view的時間;

用html.action呼叫partial view的時間。

顯示結果:

上面結果可以清晰的看到:

view及其中所有的partial view預設情況下共享view中的viewdata和viewbag

可以通過html.action, 配合被呼叫的action改變傳遞不同的資料

本次我們主要講解了partial view這一實用功能的使用。

html.partial使用方便,在不需要改變資料內容時非常方便。

html.action 使用更加靈活,可以根據業務要求按需定製partial view顯示內容。

請充分理解本篇文章所講的幾個例子。

好了,今天就到這裡。

MVC5 EF6 入門完整教程

mvc5 ef6 入門完整教程 第0課 從0開始 asp.net mvc開發模式和傳統的webform開發模式相比,增加了很多 約定 直接講這些 約定 會讓人困惑,而且東西太多容易忘記。和微軟官方教程不同,筆者盡量不用腳手架,從空白框架開始,一步一步新增功能,每次新增的東西剛好夠用,讓大家能真正能用...

MVC5 EF6 入門完整教程

原文 mvc5 ef6 入門完整教程 第0課 從0開始 asp.net mvc開發模式和傳統的webform開發模式相比,增加了很多 約定 直接講這些 約定 會讓人困惑,而且東西太多容易忘記。和微軟官方教程不同,筆者盡量不用腳手架,從空白框架開始,一步一步新增功能,每次新增的東西剛好夠用,讓大家能真...

MVC5 EF6 入門完整教程

第0課 從0開始 asp.net mvc開發模式和傳統的webform開發模式相比,增加了很多 約定 直接講這些 約定 會讓人困惑,而且東西太多容易忘記。和微軟官方教程不同,筆者盡量不用腳手架,從空白框架開始,一步一步新增功能,每次新增的東西剛好夠用,讓大家能真正能用起來,理解每乙個過程。本系列文章...