Я встречал этот вопрос несколько раз здесь, в SO, но ни один из них не дал приемлемого ответа:
ASP.NET MVC @ Url.Action включает текущие данные маршрута
ASP.NET MVC неявно добавляет значения маршрута
В основном у меня есть контроллер с методом действия под названием Group, у него есть перегрузка, которая не получает параметров и отображает список элементов, а еще один, который получает идентификатор и отображает подробности для эта группа.
Если я сделаю что-то вроде этого:
Url.Action("Group", "Groups");
С главной страницы сайта (/) он вернет URL-адрес, подобный этому:
"mysite.com/Groups/Group"
, что нормально Теперь, если текущий адрес сайта / Группы / Группа / 1 И я вызываю тот же метод
Url.Action("Group", "Groups");
, возвращаемый URL-адрес выглядит следующим образом:
"mysite.com/Groups/Group/1"
Он автоматически добавляет значение маршрута для текущей страницы при генерации URL-адреса. Даже если я сгенерирую URL-адрес следующим образом:
Url.Action("Group", "Groups", null);
Таким образом, явно указав, что мне не нужны какие-либо значения маршрута, сгенерированный URL-адрес останется таким же. Чтобы получить адрес, который я хочу, я должен явно установить значение маршрута в пустую строку, например:
Url.Action("Group", "Groups", new {id=""});
Это сгенерирует следующий URL:
"mysite.com/Groups/Group"
Мой вопрос: почему это происходит? Если я не установил никаких значений маршрута, он не должен добавлять их в сгенерированный URL.