【发布时间】:2011-10-05 16:05:36
【问题描述】:
我有一个这样的 URL 方案:
website.com/keywords
我也有特定的控制器:
website.com/controller/action
有时关键字可能看起来很像控制器 URL,或者上面有某种“/url/thingy”。所有关键字 URL 都将存储在数据库中并返回静态内容。我想做的是首先匹配“关键字”控制器(它只使用 {*}),如果在数据库中找不到 URL,则弹回路由器,然后让匹配继续。
我现在有一个解决方法,将通用匹配路由器放在最后,并执行 302 重定向到正确的控制器,但这是一个较长的往返时间,如果我可以弹回,则没有必要出去。
【问题讨论】:
-
可以给路由添加自定义约束,可以匹配一个列表。例如,您甚至可以查找约束中的数据库 - 但由于所有内容都将通过路由引擎,我不确定从可伸缩性的角度来看这是否明智,除非您有效地缓存查找。无论如何,这可能会在 SO 上得到更好的答案。
标签: c# model-view-controller asp.net-mvc-3