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 RouteConfig 将一条路径路由到控制器,但不路由另一条路径

默认情况下,MVC 不路由静态文件,只是尝试在请求的路径下提供静态.css文件。只需删除.css结尾,即可使用路线。

编辑:为了更清楚,IIS尝试在MVC路由处理开始发挥作用之前提供这些静态文件。