豎向主框架主要,Razor的主版頁面框架

 2023-11-22 阅读 17 评论 0

摘要:類似于2.0版本中的MasterPage主版頁面框架,不過mvc3.0推出的RazorView內建的主版頁面語法與原本的webFormview的MasterPage相差甚遠 1,Razor的頁面執行順序 當controller 回傳ViewResult給MvcHandler(用mh代替)之后,mh會先設法找到對應的檢

類似于2.0版本中的MasterPage主版頁面框架,不過mvc3.0推出的RazorView內建的主版頁面語法與原本的webFormview的MasterPage相差甚遠

1,Razor的頁面執行順序
當controller 回傳ViewResult給MvcHandler(用mh代替)之后,mh會先設法找到對應的檢視頁面view,當找到了對應的razor頁面之后,會進入頁面執行生命周期,在Razor頁面的執行過程中有個固定的執行順序。
被mh找到的razor頁面會優先執行,執行完畢后,會檢查這個view頁面是否含有主版頁面所需要的Layout屬性,如果有的話便試圖載入Layout屬性指定的Razor主版頁面,找到主版頁面后悔開始將內容響應給用戶端,
在過去的MasterPage中,執行的時候會先找到ContentPlaceHolder控制項,并將之前主要頁面的執行結果填入后輸出到用戶端eg<標簽asp: ContentPlaceHolder ID="MainContent" runat="server"/>
實務上:在溝通的時候會把MasterPage定義為一個區塊的動作戲稱為“挖洞”,也就是在MasterPage里挖了一個洞,然后由主要頁面的內容填入。
在razor里當主版頁面被載入后,執行的過程也一樣,在razor主版頁面里也會定義出一些需要被填入的的內容(挖洞),然后讓主要頁面的內容填入。
2,關于_Layout主版頁面。
預設的Views/Shared/_Layout.cshtml文件其實和一般的razor檢視頁面差不多,同樣是razor語法,但不同的地方是有兩個Razor語法,分別是@RenderBody,@RenderSection這兩段聲明,就是所謂的挖洞宣言
@RenderBody()在主版頁面中可視為“預設挖洞”,也就是主要的View頁面在沒有特別聲明的情況下,所有內容都會被填入到@RenderBody()這個位置。
@RenderSection在Razor主版頁面中被視為“具名坑洞”,
@RenderSection(“featured”,required:false)意思就是我們在主版頁面中定義一個叫featured的坑洞,第二個是required具名參數則是聲明這個坑洞是否必須被填滿,如果在主版頁面設定的具名坑洞把required參數設定為true的話,那么所有載入這個主版頁面的view頁面都必須輸出想對應的內容,否則就會發生狀況。
注意:由于razor頁面有其執行順序,主要是先執行view再執行Layout主版頁面,因為view與layout共用一個viewDataDictionary實體,因此,如果要將數據傳遞到layout頁面中一樣可以通過viewData或者viewBag的方式傳遞過去,但是千萬別以為可以從layout傳數據回view頁面,因為執行順序是不一樣的。

豎向主框架主要。轉載于:https://www.cnblogs.com/jinhaoObject/p/4597672.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/184823.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息