Как указать пространство имен в пользовательском обработчике маршрута для MVC3?
Я написал собственный обработчик маршрута. Поскольку на моем веб-сайте есть области с конфликтующими именами контроллеров, я получаю сообщение об ошибке: найдено несколько типов, соответствующих названному контроллеру...
Я думаю, что мне нужно указать пространство имен в моем обработчике, верно?
Я пробовал следующее, ни один из которых не работает:
public class MyRouteHandler : MvcRouteHandler
{
protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
{
(... complicated DB lookups and "re-writing" of requestContext.RouteData.Values["controller"] ...)
// doesn't work
requestContext.RouteData.Values["namespaces"] = new[] { "Site.Contollers" };
// doesn't work
requestContext.RouteData.DataTokens.Add("namespaces", new[] { "Site.Contollers" });
// doesn't work
requestContext.RouteData.Values["namespaces"] = "Site.Contollers";
// doesn't work
requestContext.RouteData.DataTokens.Add("namespaces", "Site.Contollers");
(... snip ...)
return base.GetHttpHandler(requestContext);
}
}
Какой правильный путь?
ПРИМЕЧАНИЕ. Поскольку мой обработчик выполняет поиск в базе данных и выбирает различные контроллеры на основе результатов, я не могу использовать базовый метод MapRoute() в моем файле Global.asax.cs (насколько я знаю).
1 ответ
Решение
О боже, я тупой.
Я с ошибкой написал "Контроллеры". Правильный ответ:
requestContext.RouteData.DataTokens.Add("namespaces", new string[] { "Site.Controllers" });