MVC RouteConfig 将一条路径路由到控制器,但不路由另一条路径
本文关键字:一条路 路径 一条 路由 控制器 RouteConfig MVC | 更新日期: 2023-09-27 18:30:55
我的路由配置中映射了两条路由:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Content",
url: "Content/{item}.css",
defaults: new
{
controller = "Content",
action = "GetContent"
}
);
routes.MapRoute(
name: "Reports",
url: "SubFolder/App/Views/OtherFolder/Reports/{report}.html",
defaults: new
{
controller = "Reports",
action = "GetReport"
}
);
}
对于类似
http://example.com/SubFolder/App/Views/OtherFolder/Reports/someReport.html
第 2 条路由在 ReportsController
中正确触发了 GetReport
方法:
public ActionResult GetReport(string report) { .... }
但是对于像这样的网址
http://example.com/Content/app.css
我希望第一条路线在ContentController
中触发GetContent
方法:
public ActionResult GetContent(string item) { ... }
但事实并非如此。任何想法如何正确路由?理想情况下,我希望将Content
文件夹下的任何内容的GET请求路由到ContentController
,但我只是直接从该文件夹中的css文件开始。
我使用的是 IIS 8.0、MVC 4.0,如果这有所作为,请使用 VS2012。
默认情况下,MVC 不路由静态文件,只是尝试在请求的路径下提供静态.css文件。只需删除.css结尾,即可使用路线。
编辑:为了更清楚,IIS尝试在MVC路由处理开始发挥作用之前提供这些静态文件。