MVC View顯示詳解(RenderBody,RenderPage,RenderSection,Partial)

一、Views文件夾 -> Shared文件夾下的 _Layout.cshtml 母版頁

@RenderBody?

當創建基于_Layout.cshtml布局頁面的視圖時,視圖的內容會和布局頁面合并,而新創建視圖的內容會通過_Layout.cshtml布局頁面的@RenderBody()方法呈現在標簽之間。

?

@RenderPage
從名稱可以猜出來這個方法是要呈現一個頁面。比如網頁中固定的頭部可以單獨放在一個共享的視圖文件中,然后在布局頁面中通過這個方法調用,用法如下:
@RenderPage(“~/Views/Shared/_Header.cshtml”)?
帶參數
@RenderPage(“~/Views/Shared/_Header.cshtml”,new{parm="my",parm2="you")?
調用頁面獲取參數:
//獲取 RenderPage() 傳遞過來的參數
@PageData["param"]

?

@RenderSection

布局頁面還有節(Section)的概念,也就是說,如果某個視圖模板中定義了一個節,那么可以把它單獨呈現出來
為了防止因缺少節而出現異常,可以給RenderSection()提供第2個參數:
@RenderSection("head", false)

@if (IsSectionDefined("head"))
??????? {
??????????? @RenderSection("head", false)
??????? }
??????? else
??????? {
??????????? <p>SubMenu Section is not defined!</p>
??????? }

?

二、@RenderSection定義

HelperResult RenderSection(string name)

但是當如果使用了_Layout.cshtml做母版頁的頁沒有實現Section的話,就會拋出異常,這是因為在_Layout.cshtml中使用的是@RenderSection(“SubName”),他要求所有子頁都要實現。

HelperResult RenderSection(string name, bool required = true)

其中,required默認為true表示引用這個布局頁的所有View必須含有該?Section?,設為false則為可以有,也可以沒有。

?

三、@Html.Partial

Partial 每次都會創建自己的 TextWriter 實例并且把內容緩存在內存中. 最后把所有 writer輸出的內容發送到一個 MvcString對象中
更多時候我們會使用? @{ Html.RenderPartial("Details"); }? 而不是@Html.Partial

?

Html.RenderPartial()與@Html.Partial的區別

Html.RenderPartial? 直接輸出至當前 HttpContext(因為是直接輸出,所以性能好)。

Html.Partial??????????? 將視圖內容直接生成一個字符串并返回(相當于有個轉義的過程)。

?

RenderPage()和RenderPartial()的區別

RenderPage()調用的頁面只能使用其傳遞過去的數據。
而RenderPartial()是可以使用viewdata,model等數據的。

如:@{Html.RenderPartial("BasicChart",model);}
  用這個重載可以在部分視圖里使用強類型,然后在主視圖中使用第二個參數傳model過去? ? ??

????? @{Html.RenderPartial("BasicChart",ViewData["myData"]);}

?

Html.RenderPartial和Html.RenderAction的區別

Html.RenderPartial適合用在重覆使用的UserControl,并且只需要透過Model來呈現內容。


Html.RenderAction則會先去呼叫Controller的Action方法,如果此UserControl是需要透過資料庫取得資料來呈現(透過Action來讀取資料庫),此時會比較適合使用此方式。

?

補充:

1、帶有Render的方法返回值是void,在方法內部進行輸出;不帶的返回值類型為MvcHtmlString,所以只能這樣使用:
@Html.Partial 對應 @{Html.RenderPartial(....);}
@Html.Action 對應 @{Html.RenderAction(....);}
2、Html.Partial可以直接提供用戶控件名作為參數,而Html.Action需要有對應的Action,在Action內部返回PartailResult(即retun PartialView())。
3、對于簡單的沒有任何邏輯的用戶控件,推薦使用Html.Partial;對于需要設置一些Model的用戶控件,推薦使用Html.Action。當然,有Model數據也是可以使用Html.Partial方法的,可以看方法的重載。
4、使用Html.Action有個好處,就是可以根據不同的場景選擇不同的用戶控件。
比如:
@Html.Action("UserInfoControl")
在對應的UserInfoControl這個Action中,在用戶未登錄的時候,可以retun PartialView("LogOnUserControl");登錄后,可以retun PartialView("UserInfoControl");

?

轉載于:https://www.cnblogs.com/akwwl/p/4933770.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373013.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373013.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373013.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何在Windows系統下安裝多個Redis實例

如何在Windows系統下安裝多個Redis實例 轉載于:https://www.cnblogs.com/xiaohui1990/p/5505944.html

注冊表中shell文件不見了_win7系統注冊表中的shell文件不小心被刪除的解決方法...

我們在操作電腦的時候,win7系統注冊表中的shell文件不小心被刪除的問題對于我們來說其實是比較少見的&#xff0c;一般情況下的正常使用都不會遇到win7系統注冊表中的shell文件不小心被刪除的狀況。但在win7系統中如果由于我們個人的不當操作導致win7系統注冊表中的shell文件不…

庫卡機器人C4計算機無法啟動,KUKA-C4標準版機器人啟動時序

描述1.T1模式下選擇CELL程序&#xff0c;手動執行程序&#xff0c;注意中間路徑&#xff0c;有時機器人不在HOME點附近&#xff0c;回原點的過程中需慢速運行&#xff0c;直至到達BCO。2.松開執行鍵&#xff0c;重新按下&#xff0c;信息欄出現“運行方式錯誤”提示&#xff0c…

ADF:將UI類別與動態表單一起使用

JDev 11g R2具有有趣的新功能“ UI類別”。 它使我們可以在視圖對象定義級別上以聲明方式對VO的屬性進行分組。 例如&#xff0c;我的VEmployees視圖對象的“ UI Categories”選項卡如下所示&#xff1a; 默認情況下&#xff0c;每個視圖對象都有一個預定義的類別“默認”。 我…

Exchange超級實用命令行

發現Powershell很強大以后&#xff0c;就欲罷不能了。來點干貨 有PST文件的沒有成功導出&#xff0c;原因是執行時會報錯&#xff0c;說需要64位Outlook&#xff0c;dotnet4.5以上環境。還有說法是Exchange2010開始不支持PST導入導出。 整理了一下最近嘗試比較實用的命令&#…

位數不足前面補0mysql語句_全網熱議:監控補光燈爆亮閃瞎眼!你遇到過嗎?

唔知大家有無咁ga體會每當夜晚揸車經過一排監控補光燈瞬間像“瞎子”那樣看不到東西&#xff0c;“威力”堪比遠光燈(△ 11月12日晚&#xff0c;安定門外大街&#xff0c;主路上的監控補光燈)近日&#xff0c;“監控補光燈太刺眼&#xff0c;給夜間行車安全造成極大隱患”一事引…

4種常見的 PHP 設計模式

工廠模式 在大型系統中&#xff0c;許多代碼依賴于少數幾個關鍵類。需要更改這些類時&#xff0c;可能會出現困難。例如&#xff0c;假設您有一個從文件讀取的 User 類。您希望將其更改為從數據庫讀取的其他類&#xff0c;但是&#xff0c;所有的代碼都引用從文件讀取的原始類。…

三網合一是指計算機網,什么是三站合一網站?什么是三網合一網站?

原標題&#xff1a;什么是三站合一網站&#xff1f;什么是三網合一網站&#xff1f;三站合一網站和三網合一網站是一個概念&#xff0c;都是指PC網站手機網站微信網站1. 什么是電腦網站指針對普通PC電腦上或筆記本的屏幕進行排版設計的網站&#xff0c;只有在普通PC電腦上或筆記…

使用HMAC(Play 2.0)保護REST服務

我們有HTTPS&#xff0c;還需要什么&#xff1f; 當您談論基于REST的API的安全性時&#xff0c;人們通常會指向HTTPS。 借助HTTPS&#xff0c;您可以使用每個人都熟悉的方法輕松保護您的服務免遭窺視。 但是&#xff0c;當您需要更高級別的安全性或HTTPS不可用時&#xff0c;您…

安裝卡主_智能溫室四周玻璃的安裝學問還這么多

智能玻璃溫室大棚是指頂部及四周以玻璃為覆蓋材料的尖頂溫室大棚&#xff0c;玻璃溫室大棚這幾年的流行是由于紋絡型溫室頂部陽光板問題的抗老化方面容易出現問題。因此很多客戶為了種植獲得更高的透光率&#xff0c;更長的使用年限&#xff0c;因而多選擇全玻璃溫室大棚。那么…

String類詳解(1)

首先String是一個類。  1&#xff0c;實例化String類方法。 1&#xff09;直接賦值&#xff1a;String name"haha"; 2)通過關鍵字&#xff1a;String namenew String("haha"); 2&#xff0c;String類的數據比較。 首先回顧一下&#xff0c;基礎數據的比較…

第六章 計算機網絡與i教案,大學計算機基礎教案第6章計算機網絡基礎與應用.docx...

廣東第二師范學院計算機科學系教案課程名稱計算機基礎I課程代碼111012003課程類型公必√□ 專必□ 專選□ 公選□授課方式講授□ 實踐□案例討論□ 上機√□考核方式考試□√ 考查□上機□√ 論文□教學總學時數16學分數1學時分配課堂講授 2 學時&#xff1b;實踐課 14 學時教材…

分享性能優化問題

談談性能優化問題 代碼層面&#xff1a;避免使用css表達式&#xff0c;避免使用高級選擇器&#xff0c;通配選擇器。 緩存利用&#xff1a;緩存Ajax&#xff0c;使用CDN&#xff0c;使用外部js和css文件以便緩存&#xff0c;添加Expires頭&#xff0c;服務端配置Etag&#xff0…

使用Scala,Play和Akka連接到RabbitMQ(AMQP)

在本文中&#xff0c;我們將研究如何從Scala連接到RabbitMQ&#xff0c;以便可以從應用程序中支持AMQP協議。 在此示例中&#xff0c;我將使用Play Framework 2.0作為容器&#xff08;有關更多信息&#xff0c;請參閱我在該主題上的其他文章 &#xff09;在其中運行應用程序&am…

阿爾法貝塔閥原理_圖總結 - 阿爾法個貝塔 - 博客園

一.思維導圖二.概念筆記圖的存儲結構1. 鄰接矩陣定義&#xff1a;設圖G有n (n大于等于1) 個頂點&#xff0c;則鄰接矩陣是一個n階方陣。當矩陣中的 [i,j] !0(下標從1開始) ,代表其對應的第i個頂點與第j個頂點是連接的特點無向圖的鄰接矩陣是對稱矩陣&#xff0c;n個頂點的無向圖…

WebApi Post 后臺無法獲取參數的解決方案

事件回放&#xff1a; 之前一段時間&#xff0c;公司里前端用的Angularjs 發送http請求也是用的ng的組件&#xff0c;后臺是.Net的WebApi 前端 var data {PArgs: {PageIndex: 0,PageSize: 8,RowsCount: 0} };$http.post("/Api/Test/ABC", data).success(function (d…

南京大學計算機系周小莉,周會群

媒體報道&#xff1a;南京大學周會群&#xff1a;用計算機聰明地做實驗Q《中國教育網絡》A周會群Q&#xff1a;南京大學的高性能計算中心非常特殊&#xff0c;分布在物理&#xff0c;化學、天文、地球科學四個不同的學科中&#xff0c;為什么采取這種模式&#xff1f;A&#xf…

不要慫,就是GAN (生成式對抗網絡) (五):無約束條件的 GAN 代碼與網絡的 Graph...

GAN 這個領域發展太快&#xff0c;日新月異&#xff0c;各種 GAN 層出不窮&#xff0c;前幾天看到一篇關于 Wasserstein GAN 的文章&#xff0c;講的很好&#xff0c;在此把它分享出來一起學習&#xff1a;https://zhuanlan.zhihu.com/p/25071913。相比 Wasserstein GAN &#…

用于MyBatis CRUD操作的Spring MVC 3控制器

到目前為止&#xff0c;我們已經為域類“ User ”創建了CRUD數據庫服務&#xff0c;并且還將MyBatis配置與Spring Configuration文件集成在一起。 接下來&#xff0c;我們將使用Spring MVC創建一個網頁&#xff0c;以使用MyBatis CRUD服務對數據庫執行操作。 使用MyBatis 3創建…

2pin接口耳機_拆解報告:雷柏首款真無線耳機XS200

-----我愛音頻網拆解報告第185篇-----雷柏是一家歷史悠久的鼠標和鍵盤廠商&#xff0c;截至目前&#xff0c;雷柏(rapoo)總共出了四款耳機&#xff0c;此前曾推出過三款藍牙耳機&#xff0c; 分別是S500 藍牙立體聲麥克風耳機&#xff0c;S200 藍牙立體聲麥克風耳機&#xff0c…