【问题标题】:Common layout with different design parts for each controller in ASP MVC 4ASP MVC 4 中每个控制器具有不同设计部分的通用布局
【发布时间】:2012-04-05 21:05:42
【问题描述】:

我有一些带有站点结构的基本布局。在这个默认布局中,我定义了页眉标签、正文结构和页脚:

<html>
<head>...</head>
<body>
<div id="sidebar">...</div>
<div id="entry">@RenderSection("Entry", true)</div>
<div id="footer">...</div>
</body>

每个控制器中的每个操作都在其视图中定义自己的入口部分。

<!-- in View/Index.cshtml -->
@section Entry {
   Hello from Index action.
}

<!-- in View/Uploads.cshtml -->
@section Entry {
   Hello from Uploads action.
}

<!-- in View/Users.cshtml -->
@section Entry {
   Hello from Users action.
}

但我也想为每个控制器定义不同的侧边栏。如果我将 @RenderSection("SideBar", true) 放在主布局中,我必须为每个控制器操作重复侧边栏代码。我也无法在主布局中定义侧边栏设计代码,因为我想为每个控制器使用不同的 sibebars(但我想为控制器中的每个操作使用相同的侧边栏)。

如何在不重复每个视图的侧边栏设计代码的情况下解决这个问题?

我找到了解决方案https://stackoverflow.com/a/5573970,但它需要为每个控制器复制基础站点结构。

感谢您的回答,抱歉我的英语不好:(。

【问题讨论】:

    标签: asp.net-mvc razor


    【解决方案1】:

    输入@RenderSection("SideBar", false)

    然后您可以只为某些控制器布局定义部分。

    您可能希望为每个控制器定义单独的布局,并且此控制器中的每个视图都将使用控制器布局(您可以在其中放置侧边栏)而不是默认布局。控制器布局将使用默认布局。

    【讨论】:

    • 如何在控制器布局中使用默认布局?
    • @{ 布局 = "~/Views/Shared/Default.cshtml"; }
    • 哦,我忘记了在布局中定义布局的能力。谢谢!
    猜你喜欢
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    相关资源
    最近更新 更多