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" })
当前网址为/ SUV / search-car
时结果正确当前网址为/ SUV / NY /搜索时,它们都变为
因此,第一个链接{location}从当前请求转移。我不希望我的链接改变:)
我尝试将空位置
$@Url.RouteUrl(new { controller = MVC.Home.Name, action = MVC.Home.ActionNames.Search, car = "SUV", location = "" })
所以它生成它(使用正确的路线,但将其添加为参数)
/ SUV /搜索车?位置= NY
如何生成指向相同操作并具有不同路由数据集的链接,并且与当前请求URL无关。
答案 0 :(得分:1)
指定Route name,car-location或car-only作为RouteUrl方法的第一个参数,如此
@Url.RouteUrl("car-only", new { controller = MVC.Home.Name, action = MVC.Home.ActionNames.Search, car = "SUV", location = "" })