ASP.NET MVC 3 已經(jīng)正式發(fā)布一段時(shí)間了,現(xiàn)在估計(jì)許多人都在拼命學(xué),我也不能例外,剛剛看到了一篇文章,介紹了三個(gè)非常有用的方法:RenderBody,RenderPage和RenderSection,現(xiàn)在自己再總結(jié)下。 1. RenderBody 在Razor引擎中沒有了“母版頁”,取而代之的是叫做“布局”的頁面(_Layout.cshtml)放在了共享視圖文件夾中。在這個(gè)頁面中,會看到標(biāo)簽里有這樣一條語句: @RenderBody() 其實(shí)它的作用和母版頁中的服務(wù)器控件類似,當(dāng)創(chuàng)建基于此布局頁面的視圖時(shí),視圖的內(nèi)容會和布局頁面合并,而新創(chuàng)建視圖的內(nèi)容會通過布局頁面的@RenderBody()方法呈現(xiàn)在標(biāo)簽之間。 這個(gè)方法不需要參數(shù),而且只能出現(xiàn)一次。 2. RenderPage 從名稱可以猜出來這個(gè)方法是要呈現(xiàn)一個(gè)頁面。比如網(wǎng)頁中固定的頭部可以單獨(dú)放在一個(gè)共享的視圖文件中,然后在布局頁面中通過這個(gè)方法調(diào)用,用法如下: @RenderPage(“~/Views/Shared/_Header.cshtml”) @RenderBody() 代碼簡潔直觀,另外似乎帶下劃線的視圖文件有特殊含義,以后再研究吧。 3. RenderSection 布局頁面還有節(jié)(Section)的概念,也就是說,如果某個(gè)視圖模板中定義了一個(gè)節(jié),那么可以把它單獨(dú)呈現(xiàn)出來,用法如下: @RenderPage(“~/Views/Shared/_Header.cshtml”) @RenderBody() @RenderSection(“footer”) 當(dāng)然還要在視圖中定義節(jié),否則會出現(xiàn)異常: @section footer { Footer Here } 為了防止因缺少節(jié)而出現(xiàn)異常,可以給RenderSection()提供第2個(gè)參數(shù): @RenderSection(“footer”, false) 英文原文網(wǎng)址:http://www./ShowArticle.aspx?ID=636
RenderBody 在Razor引擎中沒有了“母版頁”,取而代之的是叫做“布局”的頁面(_Layout.cshtml)放在了共享視圖文件夾中。在這個(gè)頁面中,會看到<body>標(biāo)簽里有這樣一條語句: @RenderBody() 其實(shí)它的作用和母版頁中的<contentplaceholder>服務(wù)器控件類似,當(dāng)創(chuàng)建基于此布局頁面的視圖時(shí),視圖的內(nèi)容會和布局頁面合并,而新創(chuàng)建視圖的內(nèi)容會通過布局頁面的@RenderBody()方法呈現(xiàn)在<body>標(biāo)簽之間。 這個(gè)方法不需要參數(shù),而且只能出現(xiàn)一次。 RenderPage 從名稱可以猜出來這個(gè)方法是要呈現(xiàn)一個(gè)頁面。比如網(wǎng)頁中固定的頭部可以單獨(dú)放在一個(gè)共享的視圖文件中,然后在布局頁面中通過這個(gè)方法調(diào)用,用法如下: @RenderPage(“~/Views/Shared/_Header.cshtml”) @RenderBody() 代碼簡潔直觀,另外似乎帶下劃線的視圖文件有特殊含義,以后再研究吧。 RenderSection 布局頁面還有節(jié)(Section)的概念,用于單獨(dú)呈現(xiàn)視圖模板中定義的一個(gè)節(jié),用法如下: @RenderPage(“~/Views/Shared/_Header.cshtml”) @RenderBody() @RenderSection(“footer”) 當(dāng)然還要在視圖中定義節(jié),否則會出現(xiàn)異常: @section footer { <b>Footer Here</b> } 為了防止因缺少節(jié)而出現(xiàn)異常,可以給RenderSection()提供第2個(gè)參數(shù): @RenderSection(“footer”, false) 參考資料 http://blog.sina.com.cn/s/blog_55e55fcb0100oc8b.html |
|