如何将 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 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 @Html.ActionLink 中添加图像

将 ActionLink 分配给 MVC 中的 jQuery 按钮

如何在 ASP.NET MVC 中将 CSS 类应用于 Html.ActionLink?

MVC4 中的 FormCollection 与 Html Actionlink

MVC MapPageRoute 和 ActionLink

使 html 链接 href 属性等于 Ajax.ActionLink