.NET MVC5专题(母版页的使用)

1、RenderBody

布局

在Razor引擎中没有“母版页”,取而代之的是叫做“布局”的页面(_Layout.cshtml)放在了共享视图文件夹中。在这个页面中,会看到标签里面有这样一条语句:
@RenderBody()
其实它的作用和母版页中的服务器控件类似,当创建基于此布局页面的视图时,视图的内容会和布局页面合并,而新创建视图的内容会通过布局页面的@RenderBody()方法呈现在标签之间。
这个方法不需要参数,而且只能出现一次。

使用,子页面会自动填充到母版页 @RenderBody()

2、RenderSection

布局

布局页面还有节(Section)的概念,也就是说:如果某个视图模板中定义了一个节,那么可以把它单独呈现出来,用法如下:
@RenderSection(“head”,false) 当然还要在视图中定义节,否则会出现异常:
为了防止因缺少节而出现异常,可以给RenderSection()提供第2个参数:false,表示可有可无

使用

@secion head{ //do }

3、RenderPage

从名称可以猜出来这个方法是要呈现一个页面。比如网页中固定的头部可以单独放在一个共享的视图文件中,然后在布局页面中通过这个方法调用,用法如下:
@RenderPage("_FooterPartial.cshtml") 可以带参数
@RenderPage("_FooterPartial.cshtml",new {parm=“my”,parm2=“you”})

子页面

调用页面获取参数: //获取RenderPage()传递过来的参数 @PageData[“param”]

其他用法

@{ Html.RenderPartial("PartialPage", "这里是Html.RenderPartial"); }
<br />
<p>Html.Partial 返回的是字符串,放入当前位置</p>
@Html.Partial("PartialPage", "这里是Html.Partial")


<!--使用Action页-->
<br />
<p>Html.Action 返回的是字符串,放入当前位置,需要经过action的处理</p>
@Html.Action("ChildAction", "Second", new { name = "Html.Action" })

<br />
<p>Html.RenderAction 在指定位置添加一个view,返回void 需要放入大括号,需要经过action的处理</p>
@{Html.RenderAction("ChildAction", "Second", new { name = "Html.RenderAction" });}

PartialPage页面

@model String
@{
    ViewBag.Title = "PartialPage";
}

<h2>PartialPage  Second</h2>
<h3>传递过来的数据:@Model</h3>

ChildAction控制器

[ChildActionOnly]//只能被子请求访问  不能独立访问
 public ViewResult ChildAction(string name)
 {
     base.ViewBag.Name = name;
     return View();
 }
发布了145 篇原创文章 · 获赞 119 · 访问量 4446

猜你喜欢

转载自blog.csdn.net/weixin_41181778/article/details/103944082