MVC3 - 基于下拉选择更新的更改布局

时间:2012-05-09 03:19:46

标签: asp.net asp.net-mvc asp.net-mvc-3 master-pages

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

2 个答案:

答案 0 :(得分:3)

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

将单个_ViewStart.cshtml置于相应的View目录下将覆盖默认行为。因此,如果您将Home View作为示例,则_ViewStart.cshtml

下会有Views/Home

此处_ViewStart.cshtml将返回其特定布局;因此代码是

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

如您所见,您将创建一个名为_HomeLayout.cshtml的自己的布局主文件,并将其放在Views/Shared目录下。根据您的需要,您将重复此视图的数量(如果您没有指定一个视图,它将始终使用默认视图)。看看下面给出的截图。根据您的需求,您可以在下拉列表中选择不同的视图。

enter image description here

答案 1 :(得分:1)

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

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

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

将代码放在

下面
@{
     Layout = "~/Views/Shared/_NewHomeLayout.cshtml";
 }
  1. 进入“ NewHome ”视图文件夹下的新 _ViewStart.cshtml 文件。
  2. NewHome 索引视图中,您可以使用上述相同的代码直接设置布局