【问题标题】:Asp.Net MVC 3 Routing - Generating Outgoing URL using UrlHelper uses request RouteDataAsp.Net MVC 3 Routing - 使用 UrlHelper 生成传出 URL 使用请求 RouteData
【发布时间】: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


    【解决方案1】:

    像这样指定 Route 名称、汽车位置或 car-only 作为 RouteUrl 方法的第一个参数

    @Url.RouteUrl("car-only", new { controller = MVC.Home.Name, action = MVC.Home.ActionNames.Search, car = "SUV", location = "" })
    

    【讨论】:

      猜你喜欢
      • 2022-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      • 2019-07-26
      • 1970-01-01
      相关资源
      最近更新 更多