Asp.net mvc ASP.NET MVC视图位置和路由

Asp.net mvc ASP.NET MVC视图位置和路由,asp.net-mvc,routing,asp.net-mvc-routing,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/" + pag

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

  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
          );
它在以下位置显示:

  • ~/Views/Home/sv/index.aspx
  • ~/Views/Home/sv/index.ascx

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

return View("~/UseExactlyThisFile.aspx");
这样,它就不会在预先配置的各种路径和位置中进行搜索


请记住,这与路由没有多大关系(虽然有一点关系)。

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