【问题标题】:MVC controllers bubbling back into the router?MVC 控制器冒泡回到路由器?
【发布时间】: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


【解决方案1】:

并不是我不想在这个上做腿部工作,因为我也很想得到答案,但我确实在这个主题上做了书签。 custom route constraint

如果你走到一半,你可以看到如何创建你的自定义路线约束;只需搜索 Listing 2 – NotEqualConstraint.cs,然后您可以传入这些关键字的缓存列表,或者只将自定义路由约束保留在关键字列表中。

【讨论】:

  • 我们最终将全部内容放在了底部,因为我们意识到每个访问者只需点击大约一页,因为之后我们将使用正确的路线。仍然,有答案。
猜你喜欢
  • 1970-01-01
  • 2018-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多