【问题标题】:How do I use an ActionLink with the RouteValueDictionary?如何将 ActionLink 与 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 传递

标签: asp.net-mvc model-view-controller asp.net-mvc-3 html.actionlink


【解决方案1】:

如果你去 global.asax.cs 并使用模式添加一个类似于现有默认路由的新路由

"{controller}/{action}/{id}/{company}"

在默认链接之前,您应该会发现链接将按原样使用您的 ActionLink 调用正确生成。

我正在打电话,所以我想更详细一点(路由限制是防止此路由干扰默认值的好主意),但 HTC 键盘对代码不友好;)

【讨论】:

  • 知道了。我打错了我的 global.asa ......这是正确的答案。当您(或某人有机会时,我想知道是否/何时应该使用 routevalue 字典以及如何...
  • RouteValueDictionary 用于某些情况下,您已经拥有字典形式的值,但由于您不知道内容而无法将其转换为匿名类型。这也是以通用方式合并路由值的唯一方法(例如,将页码添加到当前 url,它可能具有未知数量的其他路由值) - 这就是 MVC 在产生时在整个地方所做的事情当前请求的链接。一般来说,我只在必须使用这两者中的任何一个时才使用 RouteValueDictionary,因为匿名类型方法更简洁。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-02
  • 1970-01-01
  • 2023-03-13
相关资源
最近更新 更多