MVC 的 @RenderBody、@RenderPage、@RenderSection

ASP.NET布局与视图
本文介绍了ASP.NET MVC中如何使用_Layout.cshtml作为母版页来统一网站样式,并通过@RenderBody()方法呈现具体视图内容。同时,还讲解了如何使用@RenderPage和@RenderSection来引入部分视图和定义可选的视图节。

 _Layout.cshtml 母版页

@RenderBody 

当创建基于_Layout.cshtml布局页面的视图时,视图的内容会和布局页面合并,而新创建视图的内容会通过_Layout.cshtml布局页面的@RenderBody()方法呈现在标签之间。

如图:


@RenderPage

这个用来引入部分视图的,例: @RenderPage("_header.cshtml")

@RenderSection

_Layout.cshtml模板页定义了@RenderSection("scripts")

就可以在视图页中写@section scripts(){}

为了防止因缺少节而出现异常,要在后面设置个参数:@RenderSection("scripts",required:false)

如图:




`@RenderSection("style", required: false)` 和 `@RenderSection("scripts", required: false)` 是 ASP.NET MVC 中 Razor 视图引擎的语法,用于在布局(Layout)中定义可选的内容区域。它们允许子视图(View)向布局注入自定义的样式和脚本内容。 --- ### 1. **作用说明** - **`@RenderSection("style", required: false)`**: - 允许子视图通过 `@section style { ... }` 向布局头部添加自定义 CSS 样式。 - `required: false` 表示这个区域是可选的,子视图可以不定义它。 - **`@RenderSection("scripts", required: false)`**: - 允许子视图通过 `@section scripts { ... }` 向布局底部(或任意位置)添加自定义 JavaScript 脚本。 - 同样,`required: false` 表示这个区域不是必须的。 --- ### 2. **使用方式** #### 在布局(Layout)中 ```csharp <head> <meta charset="utf-8" /> <title>@ViewBag.Title</title> @RenderSection("style", required: false) </head> <body> @RenderBody() @RenderSection("scripts", required: false) </body> ``` #### 在子视图(View)中 ```csharp @section style { <style> .custom-class { color: red; } </style> } @section scripts { <script> alert("Hello from child view!"); </script> } ``` --- ### 3. **注意事项** - 如果子视图没有定义某个 `@section`,而布局又将该区域设为 `required: true`,则会抛出异常。 - 推荐将 `scripts` 放在 `<body>` 结尾以提高面加载性能。 - 可以使用 `@section` 注入外部资源,如 CDN 链接、本地 JS 文件等。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值