1

我正在构建一个站点,我只想拥有一个控制器,并且 url 看起来像:

\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,因为这与路由匹配。

所以问题是:我怎样才能做到这一点而不会错误地获取图像请求,或者是否有完全不同的方式来支持我正在尝试做的事情?

4

1 回答 1

0

你能不能试着忽略这条路线,即

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

这是基于这篇文章,可能比这篇简短的文章更有帮助。

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

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
于 2012-06-21T13:18:43.260 回答