如何将部分视图中的部分渲染到布局中

时间:2014-05-27 03:32:25

标签: asp.net-mvc razor rendering sitecore asp.net-mvc-partialview

我正在尝试在部分渲染中生成元标记。问题是我无法渲染一个部分。我已尝试过在网上提供的各种建议。以下是情景。

_Layout.cshtml

@RenderBody()
  • 将身体与某些部分渲染区分开来

MainView.cshtml

@{
    Layout = "/Views/News/Shared/_Layout.cshtml";
}
  • 有部分效果图

Display.cshtml - 里面有一些部分渲染和HTML - 还包含我需要在_Layout中提供的元数据代码

以下是我的尝试: 场景1: Display.cshtml

{
@section main
{...}
}

MainView.cshtml

{
@section main
{
@RenderSection("main", false)
}
}

_Layout.cshtml

{
@RenderSection("main", false)
}

结果:MainView抛出异常...无法直接请求asp.net mvc,因为它调用" RenderSection"方法

场景2: - 尝试使用ViewBag在视图之间交换数据。

@ViewBag.PropertyName = "test value";

结果:@ ViewBag.PropertyName中没有值

情景3 :(令人沮丧) - _Layout.cshtml

@section main
{
<div>this is it!!</div>
}

@RenderSection(&#34; main&#34;,false);

结果:错误.....部分&#34;主要&#34;没有定义。

在开始讨论这个问题之前,我没有很好地理解视图/部分视图(非常通用)。在此基础上,我进一步了解了一下 @RenderPage() @RenderSection() 而且当然 @ Html.Partial()

到目前为止,我所看到的任何基本功能对我都没有用。有什么我错过了吗?或者是否有我误解的观点之间的父/子关系的任何细节?

任何指向正确方向的指针都会有很大帮助。 :)

干杯!!

2 个答案:

答案 0 :(得分:0)

您似乎在示例中的所有位置都有不需要的大括号。您在使用布局时也使用术语PartialView,这意味着它们是视图,而不是部分视图。 PartialView没有布局/母版页

要将新部分添加到母版页/布局,可以通过任何视图提供,您只需要

在_Layout.cshtml母版页中:

@RenderSection("main", false)

并在MainView.cshtml视图中添加 main 部分:

@{
    Layout = "/Views/3News/Shared/_Layout.cshtml";
}

<div>Your page content that gets rendered by RenderBody() as it is not in a section</div>

@section main
{
   <div>Some content to render inside the layout's main section</div>
}

答案 1 :(得分:0)

对于上面的问题,我在我的情况下有一个解决方法,但它没有达到目的。无论如何,我将分享我最终能够如何进行RenderSection。

New rendering: Tags.cshtml
<tags>

MainView.cshtml
@section tags
{
 @Html.Partial("Tags.cshtml")
}

_Layout.cshtml
@RenderSection("tags")

这使得标签很好。

现在,我无法共享有助于构建驻留在Display.cshtml中的标记的变量。

感谢阅读:)