На ASP.NET MVC (бета) сайте, который я разрабатываю, иногда вызовы ActionLink возвращают мне URL-адреса, содержащие строки запросов. Я выделил обстоятельства, которые вызывают такое поведение, но я до сих пор не понимаю, почему вместо создания чистого URL-адреса он решает использовать параметр строки запроса. Я знаю, что функционально они одинаковы, но для согласованности (и внешнего вида) URL-адресов это не то, что я хочу.
Вот мои маршруты:
routes.MapRoute(
"Photo Gallery Shortcut",
"group/{groupname}",
new { controller = "Photos", action = "All", Id = "" });
routes.MapRoute(
"Tagged Photos", //since the Tagged action takes an extra parameter, put it first
"group/{groupname}/Photos/Tagged/{tagname}/{sortby}",
new { controller = "Photos", action = "Tagged", Id = "", SortBy = "" });
routes.MapRoute(
"Photo Gallery", //since the Gallery's defualt action is "All" not "Index" its listed seperatly
"group/{groupname}/Photos/{action}/{sortby}",
new { controller = "Photos", action = "All", Id = "", SortBy = "" });
routes.MapRoute(
"Group", //<-- "Group" Category defined above
"group/{groupname}/{controller}/{action}/{id}",
new {controller = "Photos", action = "Index", Id = ""});
Теперь проблема возникает только тогда, когда я смотрю на представление, описанное маршрутом с именем «Помеченные фотографии», и выполняю ActionLink через:
Html.ActionLink<PhotosController>(p => p.All((string)ViewData["group"], ""), "Home")
Который производит URL:
http://domain/group/GROUPNAME?sortBy=
В любом другом представлении URL-адрес:
http://domain/group/GROUPNAME
Я снял Phil 101 * * Отладчик маршрутизации ASP.NET , и все выглядит по порядку. Это меня поставило в тупик. Есть идеи?