如何将 ActionLink 与 RouteValueDictionary 一起使用?
Posted
技术标签:
【中文标题】如何将 ActionLink 与 RouteValueDictionary 一起使用?【英文标题】:How do I use an ActionLink with the RouteValueDictionary? 【发布时间】:2011-06-18 21:58:02 【问题描述】:我正在尝试使我的网址看起来像这样:
http://domain.com/controller/action/123/SomeTextForSEO
我尝试使用操作链接,但它在斜线后附加 ?company=SomeTextForSEO
而不是公司名称。
<%: html.ActionLink("DomainList", "Index", "DomainList", new id = item.CompanyID, company = item.CompanyDisplayName.Trim() , new object )%>
现在我想我需要使用RouteValueDictionary
,但我不确定如何在 ASP.NET 语法中执行此操作。有人可以指出我正确的方向吗? MSDN 的例子是不够的。
【问题讨论】:
顺便说一句,您还可以在此处为 ActionLink 调用中的最后一个参数传递 null。为确保正确的重载解决方案将其作为 (object)null 传递 【参考方案1】:如果你去 global.asax.cs 并使用模式添加一个类似于现有默认路由的新路由
"controller/action/id/company"
在默认链接之前,您应该会发现链接将按原样使用您的 ActionLink 调用正确生成。
我正在打电话,所以我想更详细一点(路由限制是防止此路由干扰默认值的好主意),但 HTC 键盘对代码不友好;)
【讨论】:
知道了。我打错了我的 global.asa ......这是正确的答案。当您(或某人有机会时,我想知道是否/何时应该使用 routevalue 字典以及如何...RouteValueDictionary
用于某些情况下,您已经拥有字典形式的值,但由于您不知道内容而无法将其转换为匿名类型。这也是以通用方式合并路由值的唯一方法(例如,将页码添加到当前 url,它可能具有未知数量的其他路由值) - 这就是 MVC 在产生时在整个地方所做的事情当前请求的链接。一般来说,我只在必须使用这两者中的任何一个时才使用 RouteValueDictionary,因为匿名类型方法更简洁。以上是关于如何将 ActionLink 与 RouteValueDictionary 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章
将 ActionLink 分配给 MVC 中的 jQuery 按钮
如何在 ASP.NET MVC 中将 CSS 类应用于 Html.ActionLink?