我正在建立一个网站,我想只有一个控制器,网址看起来像:
\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
,因为这与路由匹配。
所以问题是:如何在不正确获取图像请求的情况下执行此操作,或者是否有完全不同的方式来支持我正在尝试执行的操作?
答案 0 :(得分:0)
您是否可以尝试忽略该路线,即
routes.IgnoreRoute("{*alljpg}", new {alljpg=@".*\.jpg(/.*)?"});
这基于此article,这可能比这篇简短的帖子更有帮助。
说实话,这不是一个完整的猜测。我与favicon有一个相关的问题导致额外的请求。下面的代码解决了它,所以主要是声音
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });