Asp.Net MVC 3, при создании исходящей ссылки, например, с UrlHelper будет использовать RouteData из текущего запроса. Я не очень понимаю, почему.
Вот мой маршрут
routes.MapRoute("car-location", "{car}/{location}/search",
new {
controller = MVC.Home.Name,
action = MVC.Home.ActionNames.Search
},
new {
car = "[a-zA-Z0-9_]+",
location = "[a-zA-Z0-9_]+"
});
routes.MapRoute("car-only", "{car}/search-car",
new
{
controller = MVC.Home.Name,
action = MVC.Home.ActionNames.Search
},
new
{
car = "[a-zA-Z0-9_]+"
});
Хорошо, теперь я пытаюсь сгенерировать ссылки:
@Url.RouteUrl(new { controller = MVC.Home.Name, action = MVC.Home.ActionNames.Search, car = "SUV" })
@Url.RouteUrl(new { controller = MVC.Home.Name, action = MVC.Home.ActionNames.Search, location = "NY", car = "SUV" })
Результат верный, если текущий URL-адрес / SUV / search-car
- / SUV / search-car
- / SUV / NY / поиск
и когда текущим URL является / SUV / NY / search, они оба превращаются в
- / SUV / NY / поиск
- / SUV / NY / поиск
Таким образом, в первую ссылку {location} переносится из текущего запроса. Я не хочу, чтобы мои ссылки менялись :)
Я пытался поставить пустое место
$@Url.RouteUrl(new { controller = MVC.Home.Name, action = MVC.Home.ActionNames.Search, car = "SUV", location = "" })
, поэтому он генерирует это (использует правильный маршрут, но добавляет это как параметр)
/ SUV / поиск автомобиля? Место = NY
Как создать ссылки, которые указывают на одно и то же действие и имеют различный набор данных маршрутизации и не зависят от текущего URL-адреса запроса.