首页 文章

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

提问于
浏览
2

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

_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(“main”,false);

结果:错误.....未定义“主”部分 .

在开始讨论这个问题之前,我对视图/部分视图(非常通用)没有很好的理解 . 在这方面,我进一步了解了@RenderPage()@ RenderSection()和ofcourse @ Html.Partial()

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

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

干杯!!

2 回答

  • 0

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

    要向主页面/布局添加新部分,可以由任何视图提供,您只需要

    在_Layout.cshtml母版页中:

    @RenderSection("main", false)
    

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

    @{
        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>
    }
    
  • 0

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

    New rendering: Tags.cshtml
    <tags>
    
    MainView.cshtml
    @section tags
    {
     @Html.Partial("Tags.cshtml")
    }
    
    _Layout.cshtml
    @RenderSection("tags")
    

    这使得标签很好 .

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

    感谢阅读:)

相关问题