ASP.NET MVC3模板頁(yè)的使用(2)
本文為大家演示下MVC3中怎樣使用模板頁(yè),在傳統(tǒng)的webform設(shè)計(jì)模式中,我們使用masterpage作為模板頁(yè),在MVC3 razor視圖設(shè)計(jì)中,我們使用另一種方式作為模板頁(yè)。
新建一個(gè)MVC3項(xiàng)目,在解決方案資源管理中,我們可以看到VIEWS文件夾下面有一個(gè)Shared文件夾。在Shared文件夾里面有一個(gè)_Layout.cshtml頁(yè)面。這個(gè)就是項(xiàng)目中默認(rèn)的模板頁(yè)面。如下圖所示 :
1.新建內(nèi)容頁(yè)
內(nèi)容頁(yè)在MVC3中也叫做視圖布局頁(yè),可以右鍵選中視圖文件夾,通過(guò)添加視圖來(lái)添加內(nèi)容頁(yè),然后選擇相應(yīng)的模板。下面就是我們創(chuàng)建的內(nèi)容頁(yè)ViewPageOne.cshtml

使用模板頁(yè)的頁(yè)面,會(huì)自動(dòng)在頁(yè)面中生成代碼。來(lái)指定模板頁(yè),使用Layout來(lái)指定具體的模板頁(yè)。如果內(nèi)容頁(yè)中沒(méi)有Layout屬性,則使用的是默認(rèn)的模板頁(yè)
@{
ViewBag.Title = "ViewPageOne";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>ViewPageOne</h2> 如果Layout指定為null,則表示不使用模板頁(yè)
@{
ViewBag.Title = "ViewPageOne";
Layout = null;
} 2.新建模板頁(yè)
右鍵選擇Shared文件,然后在菜單中選擇添加 新建項(xiàng),彈出添加新項(xiàng)對(duì)話框,然后選擇MVC3布局頁(yè),這樣就添加完成了布局頁(yè),下面的我們添加的布局頁(yè)_LayoutPageOne.cshtml
3.為某個(gè)文件單獨(dú)指定模板頁(yè)
假如某個(gè)頁(yè)面不想使用默認(rèn)的模板頁(yè),可以單獨(dú)為其指定模板頁(yè),下面的代碼把內(nèi)容頁(yè)的模板頁(yè)指定為剛創(chuàng)建的模板頁(yè)_LayoutPageOne.cshtml
@{
ViewBag.Title = "ViewPageOne";
Layout="~/Views/Shared/_LayoutPageOne.cshtml";
}
<h2>ViewPageOne</h2> 4.為某個(gè)視圖文件夾指定模板頁(yè)
假如想讓一個(gè)Controller下面的所有視圖使用同一個(gè)模板文件,可以在該Controller對(duì)應(yīng)的試圖文件夾下面創(chuàng)建一個(gè)_ViewStart.cshtml文件,然后在_ViewStart.cshtml里面指定所使用的模板頁(yè)

@{
Layout = "~/Views/Shared/_LayoutPageOne.cshtml";
}
這樣就可以把一個(gè)controller下面的視圖指定為使用一個(gè)模板文件
5.頁(yè)面不使用模板頁(yè)
如果一個(gè)內(nèi)容頁(yè)面不想使用模板頁(yè),可以把_Layout設(shè)置為null
也可以在添加視圖頁(yè)面的時(shí)候不選擇模板。
6.@RenderBody()
@RenderBody()在模板頁(yè)中使用表示內(nèi)容頁(yè)在模板中的位置。當(dāng)創(chuàng)建具有模板頁(yè)的內(nèi)容頁(yè)的時(shí)候,內(nèi)容頁(yè)就呈現(xiàn)在模板頁(yè)中@RenderBody()所在的位置,一個(gè)模板頁(yè)中只能有一個(gè)@RenderBody().
7.@RenderSection
@RenderSection用于在模板布局中定義一個(gè)區(qū)域,在內(nèi)容頁(yè)可以定義一些內(nèi)容來(lái)填充這個(gè)區(qū)域,例如內(nèi)容頁(yè)中引用的JS文件,可以填充到模板頁(yè)的section位置。每個(gè)內(nèi)容頁(yè)的單獨(dú)一些信息,可以在模板頁(yè)中這個(gè)區(qū)域顯示。
@RenderSection有兩個(gè)參數(shù),第一個(gè)參數(shù)用于定義section的名稱,第2個(gè)參數(shù)是布爾類型,如果為T(mén)RUE,表示內(nèi)容頁(yè)必須定義這個(gè)section,如果為false,則表示內(nèi)容頁(yè)可定義section,也可以不定義。
模板頁(yè):
<!DOCTYPE html>
<html>
<head>
<title>歡迎 @ViewBag.Title</title>
</head>
<body>
<p>第2個(gè)模板頁(yè)</p>
<div>
@RenderBody()
</div>
<div>
備注:
@RenderSection("Remark", false);
</div>
</body>
</html> 內(nèi)容頁(yè):
@{
ViewBag.Title = "主頁(yè)";
}
<h2>@ViewBag.Message</h2>
<p>
若要了解有關(guān) ASP.NET MVC 的更多信息,請(qǐng)?jiān)L問(wèn) <a title="ASP.NET MVC 網(wǎng)站">http://asp.net/mvc</a>。
</p>
@section Remark
{
我是主頁(yè)
}
<p>歡迎</p> 8.@RenderPage
@RenderPage用于表示在一個(gè)頁(yè)面中呈現(xiàn)另一個(gè)頁(yè)面的內(nèi)容.參數(shù)指定要呈現(xiàn)的網(wǎng)頁(yè)的位置。
我們?cè)赟hared文件夾下面新建一個(gè)footer.cshtml文件,然后里面寫(xiě)上版權(quán)信息,然后在模板頁(yè)中開(kāi)辟一塊位置用來(lái)呈現(xiàn)footer頁(yè)面。
<!DOCTYPE html>
<html>
<head>
<title>歡迎 @ViewBag.Title</title>
</head>
<body>
<p>第2個(gè)模板頁(yè)</p>
<div>
@RenderBody()
</div>
<div>
備注:
@RenderSection("Remark", false);
</div>
<footer>
@RenderPage("~/Views/Shared/footer.cshtml")
</footer>
</body>
</html>9.@Html.Partial()與Html.RenderPartial()
.@Html.Partial()與Html.RenderPartial()這兩個(gè)方法可以用來(lái)輸出一個(gè)分部頁(yè),右鍵添加新建項(xiàng),選擇MVC3分部頁(yè),就可以添加一個(gè)分部頁(yè),相當(dāng)于一個(gè)用戶控件,
這時(shí)候就可以使用者兩個(gè)方法來(lái)輸出分部頁(yè)的內(nèi)容,當(dāng)然,這兩個(gè)方法也可以直接輸出視圖頁(yè)和內(nèi)容頁(yè)。
@Html.Partial()的參數(shù)為用戶控件名稱,也就是分部頁(yè)名稱,返回值為string類型,可以直接輸出。
@Html.RenderPartial()的參數(shù)也為用戶控件名稱,返回值為VOID,調(diào)用的時(shí)候直接把內(nèi)容輸出到Response中。
用法如下:
<div id="logindisplay">
@Html.Partial("_PartialLogin")
@{
Html.RenderPartial("_PartialLogin");
}
</div> 以上就是ASP.NET MVC3模板頁(yè)的使用方法。
相關(guān)文章
.NET MVC中ViewData,ViewBag和TempData的區(qū)別淺析
這篇文章主要介紹了.NET MVC中ViewData,ViewBag和TempData的區(qū)別,分析了ViewData,ViewBag和TempData在賦值、功能特性等方面的區(qū)別于用法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01
.NET Core Windows環(huán)境安裝配置教程
這篇文章主要為大家詳細(xì)介紹了.NET Core Windows環(huán)境安裝配置教程,感興趣的小伙伴們可以參考一下2016-07-07
ASP.NETCore6開(kāi)啟文件服務(wù)允許通過(guò)url訪問(wèn)附件的操作方法
最近在做一個(gè)工作臺(tái)的文件上傳下載功能,主要想實(shí)現(xiàn)上傳圖片之后,可以通過(guò)url直接訪問(wèn),由于url直接訪問(wèn)文件不安全,所以需要手動(dòng)開(kāi)啟文件服務(wù),這篇文章主要介紹了ASP.NETCore6開(kāi)啟文件服務(wù)允許通過(guò)url訪問(wèn)附件,需要的朋友可以參考下2023-11-11
用Jquery訪問(wèn)WebService并返回Json的代碼
經(jīng)常會(huì)用JavaScript訪問(wèn)asp.net的Webservice的需求,通常的方法是用asp.net ajax來(lái)解決,但asp.net ajax框架在不國(guó)內(nèi)并不經(jīng)常被使用。2008-09-09
Asp.net MVC實(shí)現(xiàn)生成Excel并下載功能
這篇文章主要為大家詳細(xì)介紹了Asp.net MVC實(shí)現(xiàn)生成Excel并下載功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
利用ASP.NET MVC和Bootstrap快速搭建個(gè)人博客之文章打賞功能(六)
這篇文章主要介紹了利用ASP.NET MVC和Bootstrap快速搭建個(gè)人博客之文章打賞功能(六) 的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07
ASP.NET MVC從控制器傳遞數(shù)據(jù)到視圖的四種方式詳解
本篇文章主要介紹了ASP.NET MVC從控制器傳遞數(shù)據(jù)到視圖的四種方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-01-01
ASP.NET中實(shí)現(xiàn)jQuery Validation-Engine的Ajax驗(yàn)證
在jQuery的表變驗(yàn)證插件中Validation-Engine是一款高質(zhì)量的產(chǎn)品,提示效果非常精美,而且里面包含了AJAX驗(yàn)證功能2012-06-06
WPF中button按鈕同時(shí)點(diǎn)擊多次觸發(fā)click解決方法
這篇文章主要為大家詳細(xì)介紹了WPF中button按鈕同時(shí)點(diǎn)擊多次觸發(fā)click的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04

