2010-01-21 98 views
0

我有一个基础控制器,我用它来返回像这样的基本视图。ASP.NET MVC视图位置和路由

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的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

回答

1

当调用View方法,你可以在与启动应用程序相对路径,通过“〜/”,然后ASP.NET MVC将使用精确的路径指定:

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

这样,它赢得了不要在预先配置的各种路径和位置上进行搜索。

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

1

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