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