【发布时间】:2011-06-05 10:05:10
【问题描述】:
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/搜索车
- /SUV/纽约/搜索
当当前的 url 是 /SUV/NY/search 他们都变成了
- /SUV/纽约/搜索
- /SUV/纽约/搜索
所以进入第一个链接 {location} 是从当前请求转移的。我不希望我的链接发生变化:)
我尝试放置空位置
$@Url.RouteUrl(new { controller = MVC.Home.Name, action = MVC.Home.ActionNames.Search, car = "SUV", location = "" })
所以它会生成这个(使用正确的路由但将它添加为参数)
/SUV/search-car?location=NY
如何生成指向相同操作、具有不同路由数据集且独立于当前请求 url 的链接。
【问题讨论】:
标签: asp.net-mvc-3 asp.net-mvc-routing