Я видел этот вопрос пару раз здесь, в SO, но ни один из них с приемлемым ответом:
ASP.NET MVC @Url.Action включает в себя текущие данные маршрута
ASP.NET MVC неявно добавляет значения маршрута
В основном у меня есть Controller с методом действия Group, он имеет перегрузку, которая не получает никаких параметров и отображает список элементов, а другой, который получает идентификатор и отображает детали для этой группы.
Если я сделаю что-то вроде этого:
Url.Action("Group", "Groups");
На главной странице сайта (/) он возвращает URL-адрес:
"mysite.com/Groups/Group"
что хорошо Теперь, если текущий адрес сайта есть /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.