2011-01-28 41 views
1

我正在開發一個帶有MVC 3前端的CMS/Webshop引擎。我希望能夠爲動態內容/產品運行時定義url「別名」,並且我希望能夠將此URL路由到MVC控制器操作。
例如,我想能夠定義MVC 3從sql定製路由

〜/產品/主板/ {製造商}/{uniqueName}
〜/ HugeSavings/{uniqueName}
〜/產品/ {uniqueName}等

映射到ProductsController中的相同Display(字符串唯一名稱)控制器操作。這些URL模式是動態的,即使它們的順序或組合物沒有定義在設計時的規則,圖案的規則或模式的內容,而無需重新啓動應用程序在運行時可以改變,它們存儲在SQL,但需要緩存。每個圖案具有可以是一個典型的MVC URL等

產品/顯示/ {uniqueName}

或類似

`HTTP的直接鏈接的目標:// somestuff。 COM/stuff.aspx?名稱= {} uniqueName。


我發現用

RegisteredRoutes.Clear(); 
RebuildRoutes(); 

這是可怕的,因爲這將一種新模式的一個產品(或產品類別)我要在數據庫中查詢每個解決方案數以千計的產品及其相應的模式。

那麼,我可以在不清除或重新啓動應用程序的情況下更改路線嗎?我可以「注入」一些邏輯到路由而不必重新編碼整個「查看控制器和動作並解析參數」的東西。

回答

1

是的,您可以稍後添加路線。請先不要RegisteredRoutes.Clear();

+0

如果我想刪除舊的或修改的,我怎麼能識別他們?只按圖案?例如,我可以爲路線添加一個ID嗎? (因爲模式可以修改,不僅可以添加和刪除,並且在保存時我不會知道舊模式,但我知道要保存的模式的ID) – TDaver 2011-01-28 13:52:35

+0

您可以按名稱標識路由。 http://msdn.microsoft.com/en-us/library/system.web.routing.routecollection.aspx – jfar 2011-01-28 13:54:44