MVC RouteConfig将一条路径路由到Controller而不是另一条路径

时间:2014-11-18 15:05:44

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

我在RouteConfig中映射了两个路由:

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

第二条路线正确触发GetReport中的ReportsController方法:

public ActionResult GetReport(string report) { .... }

但是对于像

这样的网址
  

http://example.com/Content/app.css

我希望第一条路线能够触发GetContent中的ContentController方法:

public ActionResult GetContent(string item) { ... }

但事实并非如此。有什么想法我怎么能正确路由?理想情况下,我希望Content文件夹下的任何GET请求都可以路由到ContentController,但我只是直接从该文件夹中的css文件开始。

我在IIS 8.0,MVC 4.0上,如果有所作为,请使用VS2012。

1 个答案:

答案 0 :(得分:2)

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

编辑:为了更清楚,IIS尝试在MVC路由处理之前提供服务这些静态文件。