Я видел этот вопрос пару раз здесь, в 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.