.net 通过路由启用/禁用Razor布局

.net 通过路由启用/禁用Razor布局,.net,asp.net,asp.net-mvc-3,asp.net-mvc-routing,.net,Asp.net,Asp.net Mvc 3,Asp.net Mvc Routing,我想知道是否可以根据布线动态地将布局添加到局部视图中 例如: -返回部分视图 -返回相同的局部视图,但包装在_Layout.cshtml中 这里的要点是,我不想创建另一个具有重复功能的视图,而是动态设置布局属性 谢谢。试试这个: 行动 public ActionResult Index() { ViewBag.Layout = null; object layout; if (RouteData.Values.TryGetValue("layout", out la

我想知道是否可以根据布线动态地将布局添加到局部视图中

例如:

  • -返回部分视图
  • -返回相同的局部视图,但包装在_Layout.cshtml中
这里的要点是,我不想创建另一个具有重复功能的视图,而是动态设置布局属性

谢谢。

试试这个:

行动

public ActionResult Index() {
    ViewBag.Layout = null;

    object layout;
    if (RouteData.Values.TryGetValue("layout", out layout)) {
        switch(layout.ToString())
        {
            case "Layout1":
                ViewBag.Layout = "~/Views/Shared/_Layout.cshtml";
                break;
            // ...
        }
    }

    return PartialView("Test");
}
标记

@{
     Layout = ViewBag.Layout;
}

<div>This is the test page...</div>
或者只是

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{layout}", // URL with parameters
    new { controller = "Home", action = "Index", layout = UrlParameter.Optional, id = UrlParameter.Optional }); // Parameter defaults
试试这个:

行动

public ActionResult Index() {
    ViewBag.Layout = null;

    object layout;
    if (RouteData.Values.TryGetValue("layout", out layout)) {
        switch(layout.ToString())
        {
            case "Layout1":
                ViewBag.Layout = "~/Views/Shared/_Layout.cshtml";
                break;
            // ...
        }
    }

    return PartialView("Test");
}
标记

@{
     Layout = ViewBag.Layout;
}

<div>This is the test page...</div>
或者只是

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{layout}", // URL with parameters
    new { controller = "Home", action = "Index", layout = UrlParameter.Optional, id = UrlParameter.Optional }); // Parameter defaults

您可以创建检查路由集合并执行PartialViewResult或ViewResult的自定义视图结果。并使用它而不是View()或PartialView()


您可以创建检查路由集合并执行PartialViewResult或ViewResult的自定义视图结果。并使用它而不是View()或PartialView()


两个控制器操作是否都返回
PartialView(someModel)
?GetForm将返回
PartialView(someModel)
,是的/测试路由将采用该PartialView并向其添加布局。两个控制器操作是否都返回
PartialView(someModel)
?GetForm将返回
PartialView(someModel)
,是的/测试路线将采用PartialView并向其添加布局。这可以工作,但我希望该过程对控制器透明。在任何情况下,您也可以为您的解决方案提供路由设置吗?这可以工作,但我希望该过程对控制器是透明的。在任何情况下,您是否也可以为您的解决方案提供路由设置?