2011-07-14 102 views
5

我有這樣一個URL方案:MVC控制器冒泡迴路由器?

website.com/keywords 

我也有特定的控制器:

website.com/controller/action 

有時關鍵字可能看起來極像是控制器的網址,或有某種「/ url/thingy「。所有關鍵字網址將被存儲在數據庫中並返回靜態內容。我希望能夠做到的事情是讓「關鍵字」控制器首先匹配(它只是使用{*}),並且如果在數據庫中找不到URL,請回到路由器,然後讓匹配繼續。

我已經有了一種解決方法,它將通用匹配路由器放在最後,並將302重定向到適當的控制器,但這是一個較長的往返時間,如果我可以彈出退出。

+3

您可以爲路線添加自定義約束,該約束可以與列表匹配。你甚至可以對約束中的數據庫進行查找 - 但是由於所有內容都將通過路由引擎傳遞,我不確定從可伸縮性的角度來看這是否明智,除非您有效地緩存查找。無論如何,這可能會在SO上得到更好的答案。 – FinnNk

回答

2

不是說我不想在這件事上做腿部的工作,因爲我很想得到答案,但我確實有這個書籤的主題。 custom route constraint

如果你走了大約一半的路,你可以看到如何創建你的自定義路線限制;只需搜索清單2 - NotEqualConstraint.cs然後您可以傳入這些關鍵字的緩存列表,或者只是將自定義路由約束保存到關鍵字列表本身。

+1

我們最終把所有內容都放在了最底層,因爲我們意識到只需要每個訪問者打一個頁面,因爲之後我們將使用正確的路線。仍然有答案。 –