0

我正在使用 MVC4 并希望编写一条路线,但不确定如何去做。

在我的网站上,我有许多路线。我想要实现的目标如下:

  • 任何与路由对应的 url,都会触发该路由的控制器操作
  • 但是,如果没有为 url 找到控制器操作,我希望触发特定的控制器操作,例如。www.mywebsite.com/level1/level2/level3 没有对应的路由,所以我想调用一个特定的路由并将字符串列表中的 level1、level2 和 level3 作为控制器操作的参数传递给它。项目数量没有限制。

有了这些信息,我将检查数据是否存在于内容管理系统等中。

有什么想法可以为上述创建路线吗?

4

2 回答 2

1

你的建议基本上是一个 404 捕获。它可能听起来并不优雅,因为它感觉像是导致错误并捕获它,但 404 只是在无法识别正确路线后采取的步骤。如果 MVC 框架有一个“最终选项”路由,它将在没有找到合适的路由后被采用。

2 种方法

路由方法

  • // 我们找不到处理请求的路由。显示 404 页面。routes.MapRoute("Error", "{*url}", new { controller = "Error", action = "404" } );

-

或者

-

web.config 中的自定义错误处理程序

<customErrors mode="On" >
       <error statusCode="404" redirect="~/CatchallController/CatchallAction" />
</customErrors>   

没有路由匹配引发的条件是 404。这样你就可以将所有不匹配的~/CatchallController/CatchallAction

|

于 2013-01-22T04:26:05.170 回答
0

您可以在路线模式中使用星号来表示“包罗万象”(“可变长度”路线)。

例如“{controller}/{action}/{id}/{*catchall}”

这将匹配任何 url 与从 catchall 段开始的任意数量的段。

请记住在更一般的路线之前指定更具体的路线。

于 2013-01-22T15:56:22.857 回答