(精华)2020年8月19日 ASP.NET MVC 母版页的使用

举报
愚公搬代码 发表于 2021/10/19 01:05:51 2021/10/19
【摘要】 1、RenderBody 布局 在Razor引擎中没有“母版页”,取而代之的是叫做“布局”的页面(_Layout.cshtml)放在了共享视图文件夹中。在这个页面中,会看到标签里面有这样一条语句: @...

1、RenderBody

布局

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

  
 
  • 1
  • 2
  • 3
  • 4

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

2、RenderSection

布局

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

  
 
  • 1
  • 2
  • 3

使用

@secion head{ //do }

  
 
  • 1

3、RenderPage

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

  
 
  • 1
  • 2
  • 3

子页面

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

  
 
  • 1

其他用法

@{ 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" });}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

PartialPage页面

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

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


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

ChildAction控制器

[ChildActionOnly]//只能被子请求访问  不能独立访问
 public ViewResult ChildAction(string name)
 {
     base.ViewBag.Name = name;
     return View();
 }


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

文章来源: codeboy.blog.csdn.net,作者:愚公搬代码,版权归原作者所有,如需转载,请联系作者。

原文链接:codeboy.blog.csdn.net/article/details/108095842

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。