В моем приложении настроены эти два маршрута:
routes.MapRoute(
"PromotionModel-test", // Route name
"testSpecifications", // URL with parameters
new { controller = "test", action = "Brochure", modelName = "test", groupID = 0 } // Parameter defaults
);
routes.MapRoute(
"", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { groupID = 0, controller = "Home", action = "List", id = UrlParameter.Optional, CatID = 0 },
new {controller = @"\w{3,}"}
);
Когда я вызываю
@Url.Action("Brochure", "test")
, сгенерированный URL-адрес будет "/ testSpecifications" вместо "test / Brochure",Когда я явно делаю
@Url.Action("Brochure", "test", new { modelName = string.Empty })
, тогда это даст правильный результат.
Я знаю, что есть сценарий повторного использования переменных сегмента, но как он здесь применяется?Какая логика скрыта за сценой?
Обновления
Чего я хочу достичь, это просто создать URL-адрес, который я имел выше, без необходимости явно устанавливать значения параметров.
Представьте, что вы начали разработку веб-сайта, на котором не требовалось никаких параметров.Позже вы заметили, что вам может понадобиться добавить несколько дополнительных параметров, в приведенном выше примере добавлен новый параметр - «modelName».И затем ваш клиент запрашивает сопоставление «testSpecifications» для сопоставления с конкретной страницей, подобной приведенной выше.
Мы определенно не хотим возвращаться, чтобы обновить все действия Url.Action, чтобы установить значения по умолчанию длякаждый из них.Какой подход вы бы использовали, чтобы справиться с этим?
Надеюсь, что это имеет смысл ....