ASP.NET MVC视图位置和路由

时间:2010-01-21 07:11:47

标签: asp.net-mvc routing asp.net-mvc-routing

我有一个基本控制器,我用它来返回这样的基本视图。

  public ActionResult Index(string pageName)
        {
            return View(pageName);
        }

        public ActionResult LanguageSpecific(string ul, string pageName)
        {
            var result = View("sv/" + pageName);

            return View(result.ViewName);
        }

控制器的名称是home有没有办法让它不在/ home中查找sv内容但只是在/ sv中

  "EnglishRoute",                                              // Route name
                "{pageName}.aspx",                           // URL with parameters
                new { controller = "Home", action = "Index", pageName = "" }  // Parameter defaults
            );

            routes.MapRoute(
              "SwedishRoute",                                              // Route name
              "{ul}/{pageName}.aspx",                           // URL with parameters
              new { controller = "Home", action = "LanguageSpecific", ul = "",pageName = "" }  // Parameter defaults
          );

它看起来在这些位置:

  • 〜/查看/主页/ SV /的Index.aspx
  • 〜/查看/主页/ SV / index.ascx

2 个答案:

答案 0 :(得分:1)

当您调用View方法时,您可以传入以“〜/”开头的应用程序相对路径,然后ASP.NET MVC将使用您指定的确切路径:

return View("~/UseExactlyThisFile.aspx");

这样它就不会在预先配置的各种路径和位置进行搜索。

请记住,这与路由没有太大关系(尽管它有一点点)。

答案 1 :(得分:1)

如果您尝试本地化您的网页,为什么不使用资源?使用上面的模式,你并没有真正利用mvc的优势。或者我误解了你?一个简单的解决方案是使用动作过滤器从路径中获取语言标识符并设置UICulture。然后,视图可以使用资源来本地化其内容。