`
wyf
  • 浏览: 436688 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
社区版块
存档分类
最新评论

@RenderBody、@RenderSection、@RenderPage、Html.RenderPartial、Html.RenderAction的作用和区

    博客分类:
  • MVC
阅读更多

1. RenderBody
在Razor引擎中没有了“母版页”,取而代之的是叫做“布局”的页面(_Layout.cshtml)放在了共享视图文件夹中。在这个页面中,会看到标签里有这样一条语句:
@RenderBody()
其实它的作用和母版页中的服务器控件类似,当创建基于此布局页面的视图时,视图的内容会和布局页面合并,而新创建视图的内容会通过布局页面的@RenderBody()方法呈现在标签之间。
这个方法不需要参数,而且只能出现一次。
2. RenderPage
从名称可以猜出来这个方法是要呈现一个页面。比如网页中固定的头部可以单独放在一个共享的视图文件中,然后在布局页面中通过这个方法调用,用法如下:
@RenderPage(“~/Views/Shared/_Header.cshtml”)
带参数
@RenderPage(“~/Views/Shared/_Header.cshtml”,new{parm="my",parm2="you")
调用页面获取参数:
//获取 RenderPage() 传递过来的参数
@PageData["param"]
3. RenderSection
布局页面还有节(Section)的概念,也就是说,如果某个视图模板中定义了一个节,那么可以把它单独呈现出来,用法如下:
@RenderPage(“~/Views/Shared/_Header.cshtml”)
@RenderBody()
//模板里添加了一个节
@RenderSection(“head”)
当然还要在视图中定义节,否则会出现异常:
@section head{
//do
}
为了防止因缺少节而出现异常,可以给RenderSection()提供第2个参数:
@RenderSection("SubMenu", false)

@if (IsSectionDefined("SubMenu"))
{
@RenderSection("SubMenu", false)
}
else
{
<p>SubMenu Section is not defined!</p>
}

4.@Html.Partial
 Partial 每次都会创建自己的 TextWriter 实例并且把内容缓存在内存中. 最后把所有 writer输出的内容发送到一个 MvcString对象中
更多时候我们会使用 @{ Html.RenderPartial("Details"); } 而不是@Html.Partial

RenderPage()和RenderPartial()的区别

RenderPage()调用的页面只能使用其传递过去的数据。
而RenderPartial()是可以使用viewdata,model等数据的。

Html.RenderPartial和Html.RenderAction的区别

Html.RenderPartial适合用在重覆使用的UserControl,并且只需要透过Model来呈现内容,或是对于广告的UserControl也适合使用。 Html.RenderAction则会先去呼叫Controller的Action方法,如果此UserControl是需要透过资料库取得资料来呈现(透过Action来读取资料库),此时会比较适合使用此方式。

 

 

分享到:
评论

相关推荐

    RenderBody、RenderPage、RenderSection

    介绍RenderBody、RenderPage、RenderSection各自有点缺点以及用法

    【ASP.NET编程知识】ASP.Net MVC 布局页、模板页使用方法详细介绍.docx

    ASP.NET MVC 布局页和模板页使用方法详细介绍 在 ASP.NET MVC 中,布局页和模板页是构建 web 应用程序的重要组件。布局页(Layout Page)是指在整个网站中通用的页面结构,而模板页(Template Page)则是指用于呈现...

    MVC页面之间参数传递解析

    @Html.RenderAction("Index", "Top", new { content = "Your Content" }); ``` 这样,"Your Content"就会作为参数传递给`TopController`的`Index`Action。 **二、Html.RenderPartial方式** 不同于...

    ASP.Net MVC 布局页、模板页使用方法详细介绍

    当创建基于_Layout.cshtml布局页面的视图时,视图的内容会和布局页面合并,而新创建视图的内容会通过_Layout.cshtml布局页面的@RenderBody()方法呈现在标签之间。 @RenderPage 从名称可以猜出来这个方法是要呈现一个...

    【ASP.NET编程知识】ASP.NET MVC中的视图生成实例分析.docx

    在其它视图中,可以使用 RenderAction 来访问子 Action,类似于 RenderPartial 方法,这个方法直接将内容输出到输出流中,由于它们的返回类型都是 void,所以需要使用 @{} 来使用。 通过对 ASP.NET MVC 中的视图...

    MVC 3模板页和分部页的使用1

    在ASP.NET MVC框架中,`MVC 3`版本引入了增强的开发体验,包括模板页(也称为布局页)和分部页的使用。这些功能使得开发者能够更有效地组织和重用代码,提高应用程序的可维护性。下面将详细讨论这两个概念以及它们在...

    layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法

    其实这篇文章是给自己看的,以后忘记怎么做回来还能...首先先建layout页,建左侧菜单栏,然后下面的@RenderBody() &lt;!-- 左侧导航区域(可配合layui已有的垂直导航) --&gt; &lt;li class=layui-nav-item l

    ASP.NET MVC框架开发系列课程(4)

    通过`@Html.Partial`或`@Html.RenderPartial`辅助方法可以引入部分视图。 3. **布局页面(Layout Page)**:布局页面定义了应用程序的整体页面结构,包括页头、页脚、侧边栏等。多个视图可以共享同一个布局,从而保持...

    ASP.NET MVC框架开发系列课程(4):可替换的视图(View)

    使用`@RenderBody()`和`@RenderSection()`指令,布局视图可以包含多个内容视图或指定的区域。 为了实现视图的可替换性,还可以利用视图继承。一个视图可以继承自另一个视图,这样就可以复用大部分代码,并在子视图...

    【ASP.NET编程知识】ASP.NET MVC学习教程之Razor语法.docx

    MVC 架构分为三层,模型、视图和控制器。三层之间彼此分离且协同工作,其中,就需要控制器担当“协调”的角色,视图将请求交给控制器,控制器对模型进行操作,并将操作结果反馈给视图,视图对结果进行渲染。例如,...

    Razor语法手册

    - **HTML安全输出**:`@Html.Raw(Module.Content)`用于输出HTML内容,如`@Html.Raw("红字&lt;/font&gt;")`将显示红色的文字“红字”。 #### 八、布局(Layout) 布局是Razor中的一个重要概念,用于创建可重用的页面模板。...

    ViewPage简单实例

    4. 可以通过`@RenderBody()`来调用布局页定义的区域,或者使用`@RenderSection()`处理分部视图。 5. 最后,编译并运行项目,浏览器会显示根据ViewPage代码生成的HTML页面。 了解和掌握ViewPage的使用是成为一名合格...

    ASP.NET MVC3模板页的使用(2)

    总的来说,ASP.NET MVC3的模板页功能使得开发者能够轻松地创建一致的页面布局,同时保持内容页的灵活性,通过`@RenderBody`和`@RenderSection`进行内容的嵌入和定制。这不仅提高了开发效率,还确保了整体应用的美观...

    ASP.NET MVC学习教程之Razor语法

    它们可以单独编写的视图文件,如 `_PartialView.cshtml`,并在需要的地方通过 `@Html.Partial()` 或 `@Html.RenderPartial()` 方法调用。部分视图可以接收模型数据,实现内容的动态呈现。 5. **数据显示** 在 ASP...

    razor语法手册

    Razor语法是ASP.NET MVC框架中的一个重要组成部分,用于构建动态网页和Web应用程序。它结合了HTML、C#或VB.NET代码,使得开发者可以更简洁、直观地在视图(View)层编写代码。本篇文章将深入探讨Razor语法的核心概念...

    ASP.NET MVC Layout如何嵌套

    在这个主Layout文件中,我们可以看到它定义了一个基本的HTML结构,并包含了一些CSS样式定义和JavaScript脚本。在body标签内部,我们可以看到一个占位符@RenderBody(),这是用来嵌入子视图内容的。 接下来,我们看到...

    MVC视图代码逻辑MVC视图代码逻辑

    @RenderBody() &lt;footer&gt;... &lt;/html&gt; &lt;!-- Index.cshtml --&gt; @{ Layout = "_Layout"; } @Html.Partial("_LoginForm") ``` **5. 辅助方法(Helper Methods)** ASP.NET MVC提供了一系列内置的辅助方法,如`...

    浅谈ASP.NET Core 2.0 布局页面(译)

    此外,利用`@section`和`@RenderSection`,可以轻松地将特定的脚本、样式或内容插入到布局中,实现更复杂的页面设计。这种结构化的布局方式有助于维护大型应用程序的代码组织和一致性,提高了开发效率。

Global site tag (gtag.js) - Google Analytics