О, так ты не хочешь перенаправить? Вы хотите, чтобы URL остался:
mysite.com / партнеры / пепси / Продукты / cola.htm
но подайте:
mysite.com / продукты / cola.htm
У меня дома нет MVC, но вы не могли бы вместо этого определить свой маршрут по-другому?
Вместо:
routes.MapRoute(
"Partner",
"partners/{partner}/{*wildcard}",
new { controller = "Partners", action = "PartnerRedirect" }
);
сделать:
routes.MapRoute(
"Partner",
"partners/{partner}/{controller}/{action}/{other stuff you need}",
new { /* whatever defaults you want */ }
);
У действия теперь есть переменная-партнер, с которой можно что-либо делать, и вы можете добавить ограничения на маршрут к партнеру, чтобы совпадали только действительные.
(я думаю) вы могли бы затем использовать фильтр действий на ваших действиях / контроллерах для выполнения соответствующих действий, основанных на параметре партнера (он должен быть в httpcontext фильтра, опять же я думаю!), Чтобы у вас не было повторять код в каждом действии, если вы хотите выполнить некоторые базовые проверки / действия для партнера.
Вот неплохая статья о том, как можно скинуть эту кошку:
http://weblogs.asp.net/stephenwalther/archive/2008/08/12/asp-net-mvc-tip-31-passing-data-to-master-pages-and-user-controls.aspx