我正在构建一个站点,我只想拥有一个控制器,网址如下所示:
main-pagesub-page
main-page
不是控制器,sub-page
也不是操作,它们只是数据库中页面的名称,我想动态呈现。 换句话说,有很多页面,我不想为每个页面制作一个控制器。 事实上,我只需要一个具有如下所示的Index
操作的 Home
控制器:
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
,因为这与路由匹配。
所以问题是:我怎样才能做到这一点而不会错误地获取图像请求,或者是否有一种完全不同的方法来执行路由以支持我正在尝试做的事情?
您能否尝试忽略该路线,即
routes.IgnoreRoute("{*alljpg}", new {alljpg=@".*.jpg(/.*)?"});
这是基于这篇文章,它可能比这篇简短的文章更有帮助。
好吧,老实说,这不是一个完整的猜测。我有一个相关的问题,图标导致额外的请求。下面的代码解决了它,所以原理是合理的
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });