我正在尝试定义这样的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" }
);
答案 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。