Как указать пространство имен в пользовательском обработчике маршрута для 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" });
Другие вопросы по тегам