я эти два маршрута, сконфигурированной в моем приложении:ASP.NET MVC 3 URL.Action отображается на неправильном пути
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 «вместо« теста/брошюры ». Когда я в явном виде делаю
@Url.Action("Brochure", "test", new { modelName = string.Empty })
Тогда он даст правильный результат.
Я знаю, что существует сценарий повторного использования переменных переменных сегмента, но как он применяется здесь? Какова логика сцены?
ОбновленияТо, что я хочу достичь здесь, чтобы просто произвести URL у меня был выше, без необходимости явно устанавливать какие-либо значения параметров.
Представьте, что вы начали разработку веб-сайта, где он не требовал каких-либо параметров. Позже вы заметили, что вам может потребоваться добавить несколько дополнительных параметров, в приведенном выше примере новый добавленный параметр - «modelName». И затем вы запрашиваете запрос на карту «testSpecifications» для сопоставления с конкретной страницей, как указано выше.
Мы определенно не хотим возвращаться, чтобы обновить все Url.Action, чтобы установить значения по умолчанию для каждого из них. Какой подход вы могли бы предпринять, чтобы справиться с этим?
Надежда это имеет смысл ....
ERM .... Как это соответствует первому маршруту? Это требует, чтобы имя модели было «test». Я вообще не передавал имя модели в «Url.Action (« Брошюра »« test »)« – Jack
Нет, вы устанавливаете значение по умолчанию of modelName для тестирования. –
Итак, вы говорите, что если я конкретно не укажу имя модели, она будет соответствовать первому маршруту, так как имена действий и контроллеров совпадают, а параметр rest будет рассматриваться как значение по умолчанию, а не использовать его как требование соответствовать ему? – Jack