2011-05-18 87 views
1

我已經設置了兩個自定義擴展來啓用IIS6中的MVC。從RequestContext解析MVC路由自定義文件擴展名

所以網站可以與任一類似URL訪問...

mysite/mycontroller.europe/myaction

或像...

mysite/mycontroller.america/myaction

什麼是最可靠的方法從RequestContext實例中找到擴展名?

所以我想能夠寫類似...

var location = reqContext.......GetExtenstion(); // location = "europe" 

,顯然具有即使網站的設置/目錄變化不大的工作。

回答

2

定義路線:

routes.MapRoute(
    "DefaultWithExtension", 
    "{controller}.{extension}/{action}", 
    new { controller = "Home", action = "Index", extension = "america" } 
); 

然後:

var extension = RequestContext.RouteData.GetRequiredString("extension"); 
+0

正是我在找的東西!再次感謝你 – fearofawhackplanet 2011-05-19 11:45:07

0

您也可以只定義擴展爲對控制器的所有相關行動字符串參數,在這種情況下,它會直接可用。 例如

public ActionResult myaction(string extension) 

這仍然需要上面定義的mapRoute條目。