none
Маршрутизатор подставляет незаданные параметры из запроса? RRS feed

  • Общие обсуждения

  • Есть маршрутизация:
     routes.MapRoute(
     null,
     "Account/{id}",
     new { controller = "Account", action = "Profile", id = UrlParameter.Optional},
     new { id = @"\d+" }
     );
     
     routes.MapRoute(
     null,
     "Account",
     new { controller = "Account", action = "Profile"}
     );
     
     routes.MapRoute(
     null,
     "City/{id}",
     new { controller = "</span>City", action = "Profile" },<br/><span> new { id = @"\d+" }
     );
    
    В контроллерах для City и Account есть, соответственно, методы public ActionResult Profile(int id) и public ActionResult Profile(int? id).
    Есть View, которое отображает CityProfile и генерирует ссылку на профиль аккаунта:
    Html.ActionLink("Уч.запись", "Profile", "Account")
    Так вот, если зайти на /City/2 (где id, соотв., == 2), то ссылка генерируется не как /Account, а как /Account/2.
    То есть "маршрутизатор" подставляет вместо id, которое не задано, для первой записи в таблице маршрутизации, id
    из запроса (а точнее из RouteData.Values["id"], ибо если эту запись удалить перед генерацией, то всё как надо работает).
    Понятное дело, что это можно решить переименовав id в, допустим, AccountId и CityId, или указанием id уч.записи при
    генерации ссылки, но интересно узнать можно ли отключить подобное поведение маршрутизации (то есть подстановку
    незаданных параметров из запроса)?




    6 июня 2011 г. 15:18

Все ответы

  • Уважаемый пользователь!

    В вашей теме отсутствует активность в течение последних 5 дней. При отсутствии каких-либо действий в течение 2 последующих дней, тема будет переведена в разряд обсуждений. Вы можете возобновить дискуссию, просто оставив сообщение в данной теме


    Для связи [mail]
    16 июня 2011 г. 5:42
    Модератор