(.Net MVC)如何在返回的“View”路径中包含变量

时间:2011-04-20 17:47:35

标签: .net asp.net-mvc asp.net-mvc-3 .net-4.0

有没有办法在控制器返回的视图路径中动态包含会话或类属性/变量的值?

E.g。如果我有一个存储用户当前国家/地区的会话变量,我可以让控制器返回如下内容:

public ActionResult Index()
{
  return view(Session["country"] + "/Index")
}

谢谢。

2 个答案:

答案 0 :(得分:2)

是的,你可以。例如,如果Session["country"] = "~/Views/Foo/Bar"可以

public ActionResult Index()
{
    var country = (string)Session["country"];
    return View(country + "/Index.cshtml");
}

但如果这是出于本地化的目的,可能better ways比为每个国家/地区创建不同的视图。

答案 1 :(得分:0)

当你说“在返回的视图的路径中”时,听起来就像你想要改变用户浏览器上的位置一样。为此,您不会返回ViewResult;相反,您需要返回一个RedirectResult,指定您要重定向到的URL或路由。变量可以位于路由数据中,也可以位于您构建的URL中。

您可以使用RedirectResult的{​​{1}}方法轻松创建Redirect