MVC 3 Custom маршрутизация из sql - PullRequest
1 голос
/ 28 января 2011

Я работаю над движком CMS / Webshop с интерфейсом MVC 3.Я хочу иметь возможность определять псевдонимы URL для динамического содержимого / среды выполнения продуктов, и я хочу иметь возможность направлять эти URL-адреса на действия контроллера MVC.
Например, я хочу иметь возможность определить

~ / Продукты / Материнские платы / {производитель} / {uniqueName}
~ / HugeSavings / {uniqueName}
~ / Продукты / {uniqueName} и т. Д.

для сопоставленияк тому же действию контроллера Display (string uniqueName) в ProductsController.Эти шаблоны URL являются динамическими, даже правила для их порядка или композиции НЕ ОПРЕДЕЛЕНЫ во время разработки, правило шаблона или содержимое шаблона могут изменяться во время выполнения без перезапуска приложения, они хранятся в SQL, но требуютбыть кэшированным.У каждого шаблона есть цель, которая может представлять собой типичный URL-адрес MVC, например

Products / Display / {uniqueName}

или прямую ссылку, например

`http://somestuff.com/stuff.aspx?name={uniqueName}.


Каждое найденное мной решение использовало

RegisteredRoutes.Clear(); 
RebuildRoutes();

, что ужасно, потому что для добавления одного нового шаблона для одного продукта (или категории продукта)) Мне нужно запросить в базе данных тысячи продуктов и соответствующие им шаблоны.

Итак, можно ли изменить маршруты без очистки или перезапуска приложения?Могу ли я «внедрить» некоторую логику в маршрутизацию, БЕЗ необходимости перекодировать целое, «поиск контроллера и действия и анализ параметров».

Ответы [ 2 ]

1 голос
/ 08 июня 2011

Если вы все еще заинтересованы, я только что ответил на очень похожий вопрос, касающийся полностью динамической маршрутизации в MVC.

Многоязычные URL-адреса с ASP.NET MVC

1 голос
/ 28 января 2011

Да, вы можете добавить маршруты позже.Только не RegisteredRoutes.Clear(); их сначала.

...