0

我有一个 MVC3 网站,在页面的顶部标题上显示网站名称。这来自 site.master 页面。我想将该静态标题名称转换为页面顶部的下拉列表。选择更改 - 我想显示不同的 site.master 页面(内容视图完全来自与原始选择不同的控制器)。如何在 MVC3 Web 应用程序中执行此操作?

4

2 回答 2

3

默认情况下,所有页面都使用_ViewStart.cshtml直接在 MVC3 Web 应用程序项目中的 Views 目录下找到的页面。这将指向目录_Layout.cshtml下的(mvc 母版页)Views/Shared

将 Individual_ViewStart.cshtml放在相应的 View 目录下会覆盖默认行为。因此,如果您以 Home View 为例,您将有一个_ViewStart.cshtml低于Views/Home

这里_ViewStart.cshtml将返回它的特定布局;因此代码是

@{
    Layout = "~/Views/Shared/_HomeLayout.cshtml";
 }

如您所见,您将创建自己的布局主控_HomeLayout.cshtml并将其放置在Views/Shared目录下。根据您的需要,您将重复此操作到您拥有的视图数量(如果您不指定一个,它将始终使用默认视图)。看看下面给出的屏幕截图。稍后根据您的需要,您可以有一个下拉列表来选择不同的视图。

在此处输入图像描述

于 2012-05-09T08:29:02.443 回答
1

这很容易,在选择更改时将窗口重定向到新的 url,该 url 在控制器上执行特定的操作方法。

我没有实际的代码示例,但让我尝试用简单的英语解释

例如,默认情况下您加载HomeController的Index操作方法,索引视图使用“ site.master ”。现在在选择更改时,您将浏览器重定向到不同的 url(“ NewHome/Index ”)。NewHomeController下的索引视图会有不同的母版页,可以通过以下方式设置

把代码放在下面

@{
     Layout = "~/Views/Shared/_NewHomeLayout.cshtml";
 }
  1. 进入“ NewHome ”视图文件夹 下的新_ViewStart.cshtml文件。
  2. NewHome Index 视图中,您直接使用上面提到的相同代码设置Layout
于 2012-05-09T06:19:21.393 回答