如何使用可重用模板包装控制器的所有视图?

How to wrap all views of a controller with a reusable template?

我有一个 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>

我想尽可能避免在每个视图中重复菜单代码,因为它将来可能会变大。我对共享视图、子操作和自定义路由进行了一些研究,但似乎找不到适合这种模式的任何内容。我想在这里做的事情容易实现吗?

对于这个特定任务,您似乎需要布局

MenuWrapperTemplate.cshtml

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

欢迎查看

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

如果这些真的是菜单,您希望它们出现在网站的 layout/master 中,然后在此处查看 MVC where to render menu view

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

希望对您有所帮助