Mono asp.net MVC2 маршруты работают в windows .net-4.0, но не в mono-2.8 - PullRequest
2 голосов
/ 03 января 2011

У меня есть интересная проблема, которая, кажется, ускользает от меня.

Моно xsp4, кажется, только применяет первый маршрут для всех запросов.

Это работает на окнах:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");



    routes.MapRoute(
        "Identities",
        "{identity}",
        new { controller = "Identity", action = "Index" }
        );

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

    routes.MapRoute(
        "Static Routes",
        "",
        new { controller = "Home", action = "Index" }
        );
}

Таким образом, при запросе / thomasvjames & / Home / About в windows все работает нормально, но при запросе / Home / About в mono xsp4 он по-прежнему отображается на маршрут «Identities», а для параметра identity установлено значение «Home».

Итак, я обнаружил (возможно существующую) моно-ошибку или я могу изменить маршруты, чтобы это работало на обеих платформах?

Я также пробовал универсальный маршрут идентификации типа с ограничением, но не смог заставить его работать в моно.

[Отредактировано: Ответ] Таким образом, ответ на этот вопрос был, обновить до последней доступной сборки моно. Я не использовал достаточно недавнюю сборку 2.8 (окт), когда мне требовалась сборка nov.

Проблема решена, ниже работает, как ожидалось.

1 Ответ

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

Книга MVC, которую я имею, указывает, что правильный подход состоит в том, чтобы помещать БОЛЬШЕ определенных записей перед МЕНЬШЕ определенных записей, так что в соответствии с тем, что ваш заказ неправильный.Причиной этого является именно то, что вы описали: он обходит список по порядку и находит первую запись, которая соответствует.

С этими изменениями ваша таблица маршрутизации должна быть: `

    routes.MapRoute(
    "Static Routes",
    "",
    new { controller = "Home", action = "Index" }
    );

    routes.MapRoute(
    "Identities",
    "{identity}",
    new { controller = "Identity", action = "Index" }
    );

   routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...