0

我想使用类似/Product/22/Product-NameHtml.ActionLink的 href 来返回锚标记,其中Product是我的控制器名称,22是我的 id,Product-Name是我的标题。

在我的 global.asax 中,我设置了以下路线:

routes.MapRoute(
  "ProductRoute", // Route name
  "Product/{id}/{title}", // URL with parameters
  new { controller = "Product", action = "Index", id = UrlParameter.Optional });

我尝试使用以下代码

@Html.ActionLink(model.Name, null, "Product", 
             new { id = model.Id, title = model.Name.Replace(" ","-") }, null)

但它产生Product/Browse/22?title=Product-Name。此代码位于目录控制器的浏览操作返回的浏览视图中,这就是它在两者之间选择浏览的原因。

奇怪的是,相同的代码在Home Controller的Index操作返回的Index View中运行良好。造成这种差异的原因是什么?. 我是否遗漏了什么,或者这是 Asp.net MVC3 中的一个错误。

我应该怎么做才能实现我声明的 URL 格式。与此同时,我正在使用这段代码

<a href="/Product/@product.Id/@product.Name.Replace(" ","-")">@product.Name</a>
4

1 回答 1

3

确保您在默认路由之前定义了自定义路由并尝试

@Html.ActionLink(model.Name,
                  "Index",
                 new {controller="Product", id = model.Id, title = model.Name.Replace(" ","-") }, null)

第一个参数是 DisplayName,第二个是ActionResult's name,然后是 RouteValues

于 2012-01-07T19:27:59.233 回答