UrlHelper.Action («Редактировать», «Объявление») возвращает параметр id? - PullRequest
2 голосов
/ 28 февраля 2012

Привет

Я использую следующий код для генерации URL:

UrlHelper urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext);
urlHelper.Action("Edit", "Ad");

Если Im в данный момент находится на URL http://localhost:16055/Ad/Edit/87, метод действия вернет: "/ Ad / Edit / 87"?

Почему? Я думал, что urlHelper.Action ("Редактировать", "Объявление") будет в этом сатете не включать какие-либо параметры?

BestRegards

Редактировать 1: (маршруты)

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

    routes.MapRoute(
        "TreeEditing", // Route name
        "{controller}/{action}/{name}/{id}", // URL with parameters
        new { controller = "AdCategory", action = "Add", name = string.Empty, id = -1 }
    );

1 Ответ

7 голосов
/ 28 февраля 2012

Я думал, что urlHelper.Action ("Изменить", "Объявление") в этом сатете не будет включать какие-либо параметры?

Ну, вы ошиблись. Все помощники по URL автоматически включают все аргументы, которые были частью исходного запроса. Поэтому, если у вас есть параметр маршрута id, его значение будет использовано повторно.

Если вам не нужно это поведение, вам придется явно установить значения для этих параметров:

var action = urlHelper.Action("Edit", "Ad", new { id = "" });
...