【发布时间】:2014-04-20 12:19:41
【问题描述】:
在我的路由注册的底部附近,如果 URL 具有 .js 扩展名,我想用特定的控制器处理它(大多数 .js 内容是静态提供的,但有些是特殊的,需要提供通过控制器)。但是,正在跳过以下路由,并且包罗万象的路由正在处理请求。
routes.MapRoute("ContentScript", "{script}.js",
new { controller = "Content", action = "Script" },
new[] { "NameSpace.Controllers" }
);
这样做的正确方法是什么?
在那之后的路由中,每个剩余的请求都像这样路由(这有效并且捕获了 .js 文件),所以问题不在于任何部分,而是url 参数):
routes.MapRoute("ContentScript", "{*path}",
new { controller = "Content", action = "Index" },
new[] { "NameSpace.Controllers" }
);
我也尝试了以下方法,但没有成功:
routes.MapRoute("ContentScript", "{*script}",
new { controller = "Content", action = "Script" },
new { script = new RegexConstraint("\\.js$") },
new[] { "NameSpace.Controllers" }
);
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing