Маршрутизация не работает после обновления до Mvc 3 - PullRequest
1 голос
/ 31 января 2012

Я только что обновил свой проект Asp.Net Mvc 2 до Mvc 3, и вдруг мои ссылки перестали работать. Когда я открываю страницу, все ссылки на странице перенаправляются обратно на себя.

Кроме того, некоторые перенаправления на действия, которые раньше работали в предыдущей версии, больше не работают. Он постоянно говорит: «Ни один маршрут в таблице маршрутов не соответствует заданным значениям». Я использовал RouteDebug, чтобы увидеть, что происходит, но не смог найти никаких проблем.

Обновление

Вот один из маршрутов, которыми я пользуюсь:

// ** Standard route. **
     context.MapRoute(
        "group_default", // Route name
        "{language}/{organisation}/Research.aspx/{controller}/{action}/{organisationId}/{parameter}/",
        // URL with parameters
        new
        {
           area = "research",
           language = "en-US",
           organisation = "",
           controller = "Home",
           action = "Index",
           organisationId = UrlParameter.Optional,
           parameter = UrlParameter.Optional
        }, // Parameter defaults
        new[] { "Project.Web.Areas.Research.Controllers" }
     );

Как вы можете видеть в моем ответе ниже, проблема была вызвана двумя UrlParameter.Optional друг за другом. Это ошибка в Mvc 3

1 Ответ

2 голосов
/ 31 января 2012

Ух ты, примерно через 4 часа отладки я обнаружил проблему: это ошибка в Mvc 3. Из-за этой ошибки невозможно использовать два UrlParameter.Optional друг за другом.У Фила Хаака есть хороший пост в блоге: http://haacked.com/archive/2011/02/20/routing-regression-with-two-consecutive-optional-url-parameters.aspx

Надеюсь, это поможет другим (и сэкономит им время)

...