如果这个RenderBody满足不了你的业务需求,请放心,在此介绍另外一个Render方式RenderPage().它可以让你指定要Render的页.
1.2.@RenderPage()方法的使用
在~/Views/Home/文件夹下新建立一个ViewPage1.cshtml文件,将内容改为如下:
- <div>
- 这里是~/Views/Home/ViewPage1.cshtml,老规矩:还是不用写<asp:Content />
- </div>
并在原来的_MyLayout.cshtml文件中增加几行代码变成下面的这个样子:
- <!DOCTYPE html>
- <html>
- <head>
- <title>@ViewBag.Title</title>
- </head>
- <body>
- <div>
- 开始渲染Body<br />
- @RenderBody()
- 渲染Body结束<br />
- <br />
- 开始渲染其他页<br />
- @RenderPage("~/Views/Home/ViewPage1.cshtml")
- 渲染其他页结束<br />
- </div>
- </body>
- </html>
我们来看最终的输出效果:
498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' title="image" border="0" alt="image" src="/uploadfile/201301/6/AE184942485.png" />
在这里记住:@RenderBody()只能在_Layout.cshtml中使用一次,而@RenderPage()则可以使用多次!
好了在这里如果还有不明白的朋友们.我下面上个图说明Render的工作原理
498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' title="image" border="0" alt="image" src="/uploadfile/201301/6/6B184942908.png" />
如果想要了解在Layout中如何使用类似于原来MasterPage中的<asp:ContentPlaceHolder /><asp:Content />功能请继续往下看.
好,写到这里开始介绍上一章节中没有介绍完的两个东西:@RenderSection方法和@section标记
1.@RenderSection()方法等价于<asp:ContentPlaceHolder />,用途为在Layout中声明一个占位符.
操作:在原来的_MyLayout.cshtml文件中更改内容为如下:
- @{
- //some code
- }
- <!DOCTYPE html>
- <html>
- <head>
- <title>@ViewBag.Title</title>
- </head>
- <body>
- <div>
- 开始渲染Body<br />
- @RenderBody()
- 渲染Body结束<br />
- <br />
- 开始渲染其他页<br />
- @RenderPage("~/Views/Home/ViewPage1.cshtml")
- 渲染其他页结束<br />
- <br />
- HOHO,开始学习Section了<br />
- 开始渲染Section<br />
- 声明方式1(推荐):SectionA:<br />
- @RenderSection("SectionA", false)
- -------<br />
- 声明方式2:SectionB:<br />
- @{
- if (IsSectionDefined("SectionB"))
- {
- @RenderSection("SectionB")
- }
- }
- -------<br />
- 渲染Sction结束<br />
- </div>
- </body>
- </html>
在