2011-05-18 86 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条目。