ASP.NET MVC - Как зарегистрировать пользовательский маршрут? - PullRequest
0 голосов
/ 13 декабря 2011

Я создал пользовательский Route и зарегистрировал его в Global.asax следующим образом:

routes.Add(
            null,
            new SeoRoute(
                "foo/{id}/{title}",
                new { controller = "Foo", action = "Details" }
                ));

Так как я использую Areas в своем приложении, я должен установить Namespacesдля каждого Route.
С обычными маршрутами я делаю это так:

routes.MapRoute(
    null,
    "foo",
    new { controller = "Foo", action = "Index" },
    new string[] { "Boo.Web.Controllers" }
    );

Но как мне установить namespaces для пользовательских маршрутов?

Любая помощь будетс благодарностью!

1 Ответ

0 голосов
/ 13 декабря 2011

Я использовал ILSpy и посмотрите, как работает MapRoute.
Я не установил DataTokens значение. Вот решение:

Класс маршрута:

public class SeoRoute : Route
{
    public SeoRoute(string url, object defaultValues, string[] namespaces)
        : base(url, new RouteValueDictionary(defaultValues), new MvcRouteHandler())
    {
        if(namespaces != null && namespaces.Length > 0)
        {
            DataTokens = new RouteValueDictionary();
            DataTokens["Namespaces"] = namespaces;
        }
    }
    ...
}

Global.asax:

routes.Add(
            null,
            new SeoRoute(
                "foo/{id}/{title}",
                new { controller = "Foo", action = "Details" },
                new string[] { "Boo.Web.Controllers" }
                ));
...