2010-01-21 93 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。視圖然後可以使用資源來本地化其內容。