【发布时间】:2012-01-07 18:54:03
【问题描述】:
我想使用Html.ActionLink 来返回一个带有 href 的锚标记,例如 /Product/22/Product-Name,其中 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。此代码位于 Catalog 控制器的 Browse 操作返回的 Browse 视图中,这就是它选择 Browse 的原因之间。
奇怪的是,相同的代码在 Home 控制器的 Index 操作返回的 Index 视图中运行良好。造成这种差异的原因是什么? .我是否遗漏了什么,或者这是 Asp.net MVC3 中的一个错误。
我应该怎么做才能实现我声明的 URL 格式。同时,我正在使用此代码
<a href="/Product/@product.Id/@product.Name.Replace(" ","-")">@product.Name</a>
【问题讨论】:
-
您也不能在路由定义中将可选参数放在必需参数之前。所以你可以从路由定义中删除 id = UrlParameter.Optional。
-
路线很好......没有任何问题......我只是无法正确获取 Html.ActionLink
-
您是否尝试过使用 Html.RouteLink 代替?
-
我对此不太了解,但我在几秒钟前尝试了@3nigma 代码,它成功了:-)
标签: asp.net-mvc-3 razor asp.net-routing html.actionlink