当尝试在 MVC 4 中创建一个 catch all 路由时(我已经找到了几个示例,并且基于我的代码),它返回一个 404 错误。我在 IIS 7.5 上运行它。这似乎是一个直接的解决方案,所以我错过了什么?
请注意,如果我将“CatchAll”路线移动到“默认”路线上方,它会起作用。但是当然,其他控制器都没有到达。
这是代码:
路线配置:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
"CatchAll",
"{*dynamicRoute}",
new { controller = "CatchAll", action = "ChoosePage" }
);
控制器:
public class CatchAllController : Controller
{
public ActionResult ChoosePage(string dynamicRoute)
{
ViewBag.Path = dynamicRoute;
return View();
}
}