当我没有指定控制器时,我的路由包括图像文件请求

时间:2012-06-21 12:47:02

标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing

我正在建立一个网站,我想只有一个控制器,网址看起来像:

\main-page\sub-page

main-page 控制器,sub-page 操作,它们只是数据库中页面的名称,我想在飞行中呈现。换句话说,有很多页面,我不想为每个页面制作一个控制器。实际上,我只想要一个Home控制器,其中一个Index操作如下所示:

Function Index(ByVal Page As String, ByVal SubPage As String) As ActionResult

并且只有一个视图,它使用参数动态加载页面内容。

以下路线几乎有效:

    routes.MapRoute(
        "Default", _
        "{page}/{subpage}", _
        New With {.controller = "Home", .action = "Index", .page = "Landing", .subpage = "Index"}
    )

但问题是,它还会提取文件请求,例如/images/somefile.jpg,因为这与路由匹配。

所以问题是:如何在不正确获取图像请求的情况下执行此操作,或者是否有完全不同的方式来支持我正在尝试执行的操作?

1 个答案:

答案 0 :(得分:0)

您是否可以尝试忽略该路线,即

routes.IgnoreRoute("{*alljpg}", new {alljpg=@".*\.jpg(/.*)?"});

这基于此article,这可能比这篇简短的帖子更有帮助。

说实话,这不是一个完整的猜测。我与favicon有一个相关的问题导致额外的请求。下面的代码解决了它,所以主要是声音

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });