【问题标题】:MVC3 - Change lay out based on drop down selection updateMVC3 - 根据下拉选择更新更改布局
【发布时间】:2012-05-09 03:19:45
【问题描述】:

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

【问题讨论】:

  • 你试过什么?你坚持什么?你知道如何添加下拉控件吗?你知道如何将它绑定到一个事件吗?.....

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


【解决方案1】:

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

将单个_ViewStart.cshtml 放在相应的视图目录下会覆盖默认行为。因此,如果您以主页视图为例,您将在Views/Home 下有一个_ViewStart.cshtml

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    把代码放在下面

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多