Html.ActionLink等效于特定的URL格式

时间:2012-01-07 18:54:04

标签: asp.net-mvc-3 razor asp.net-routing html.actionlink

我想使用Html.ActionLink返回带有href的锚标记,例如 / Product / 22 / Product-Name ,其中 Product 是我的控制器名称, 22 是我的ID,产品名称是我的头衔。

在我的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 控制器的 Index 操作返回的 Index 视图中正常工作。造成这种差异的原因是什么? 。我错过了什么,或者这是Asp.net MVC3中的一个错误。

如何实现我声明的网址格式。与此同时,我正在使用此代码

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

1 个答案:

答案 0 :(得分:3)

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

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

第一个参数是DisplayName,第二个是ActionResult的名称,然后是RouteValues