我正在使用Asp.Net MVC 4,并且不确定解决路由问题的最佳方法。该站点需要支持以通常方式映射到控制器/操作的静态URL:
/约
/接触
/等
但它还需要映射到数据库中的项目:
/衣服
/衣服/跳线
/衣服/室外/蓝色涂层
我已经设法通过在我的默认路由中添加一个约束列出我的所有静态控制器来实现这一点:
constraints: new { controller = "About|Contact|Etc" }
然后添加一个捕获所有路径:
routes.MapRoute(
"Error",
"{*url}",
new {controller = "CatchAll", action = "Index"}
);
然后CatchAllController处理非静态URL,以及404s处理不存在的数据。
这是最好的方法吗?或者编写自定义路由处理程序更好?或者还有其他什么?我知道约束正则表达式可能会很长,而且在添加新页面时要记住添加它也是另一回事。