使用URL左侧的url标记添加MVC4 Route

时间:2014-01-27 23:32:43

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing

我正在尝试定义这样的MVC4路线:

 routes.MapRoute(
                       name: "ClientRoute" ,
                       url: "{currentClient}/{controller}/{action}.nex",
                       defaults: new { controller="Home", action = "Index" }
                    );

网址如下所示:http://www.mydomain.com/client34/Users/View.nex

我希望它转到用户控制器并查看操作,但它只是抱怨它无法找到该页面。

更新

我之前应该注意到这一点。我要求的网址是:

http://www.mydomain.com/client34/Users/View.nex

但ASP.Net抱怨它无法找到的网址是:

http://www.mydomain.com/Users/View.nex

更新2

奇怪的是,这条路线确实可以用于默认索引操作:

routes.MapRoute(
                       name: "ClientRoute-Default",
                       url: "{currentClient}/{controller}",
                       defaults: new { controller = "Home", action = "Index" }
                    );

3 个答案:

答案 0 :(得分:0)

您需要忽略.nex扩展名,并将其视为不指向服务器上任何特定资源的普通路由网址。 为此,您应在路由配置中添加以下行:

routes.IgnoreRoute("{*allnex}", new {allnex=@".*\.nex(/.*)?"});

答案 1 :(得分:0)

我认为问题在于.nex扩展程序绕过了MVC。您需要让MVC处理这些请求。

请查看以前对类似问题的回答:URL Pattern Routing MVC 3

答案 2 :(得分:0)

我发现了问题!谢谢大家试图提供帮助!

我们的应用程序仍然使用Castle:Monorail中的另一个路由模块,并且在它到达MVC路由模块之前,它正在重写删除URL的Client部分的URL。

这导致路由失败。

我们最终会将所有内容迁移到MVC。