我正在尝试在部分渲染中生成元标记。问题是我无法渲染一个部分。我已尝试过在网上提供的各种建议。以下是情景。
_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()
到目前为止,我所看到的任何基本功能对我都没有用。有什么我错过了吗?或者是否有我误解的观点之间的父/子关系的任何细节?
任何指向正确方向的指针都会有很大帮助。 :)
干杯!!
答案 0 :(得分:0)
您似乎在示例中的所有位置都有不需要的大括号。您在使用布局时也使用术语PartialView,这意味着它们是视图,而不是部分视图。 PartialView没有布局/母版页
要将新部分添加到母版页/布局,可以通过任何视图提供,您只需要
@RenderSection("main", false)
@{
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中的标记的变量。
感谢阅读:)