【问题标题】:How to wrap all views of a controller with a reusable template?如何使用可重用模板包装控制器的所有视图?
【发布时间】:2016-10-20 10:04:10
【问题描述】:

我有一个 ASP MVC 5 应用程序,它有一个名为 Member 的控制器,所有与成员相关的操作和视图都驻留在其中。通过此控制器创建的所有视图都应包装在一个用作菜单的 html 中。例如,欢迎视图可能如下所示:

<div class="member-menu">
    <!-- View code goes here -->
    <p>Welcome</p>
</div>

而另一个视图可能看起来像:

<div class="member-menu">
    <!-- View code goes here -->
    <p>Some other stuff here</p>
</div>

如果可能,我希望避免在每个视图中重复菜单代码,因为它可能会在未来变得更大。我对共享视图、子操作和自定义路由进行了一些研究,但似乎找不到任何适合这种模式的东西。我在这里尝试做的事情很容易吗?

【问题讨论】:

    标签: html asp.net-mvc view controller dry


    【解决方案1】:

    对于这个特定的任务,看起来你需要一个布局

    MenuWrapperTemplate.cshtml

    <div class="member-menu">
        @RenderBody();
    </div>
    

    欢迎观看

    @{
        Layout = "~/Views/Shared/MenuWrapperTemplate.cshtml";
    }
    <!-- View code goes here -->
    <p>Welcome</p>
    

    如果这些真的是菜单,您是否希望它们出现在网站的布局/主目录中,然后看这里MVC where to render menu view

    您可能应该掌握 MVC 和 Html 助手(Render/RenderAction/partial)以及布局的工作原理。

    希望有帮助

    【讨论】:

    • 一旦我将原始布局添加到新布局(即在菜单布局的顶部我必须指定Layout = "_Layout"),这非常有用。这有意义吗?谢谢!
    猜你喜欢
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 2017-07-20
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多