如何使用带有RouteValueDictionary的ActionLink?

3

我想让我的URL看起来像这样:

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传递。 - Andras Zoltan
1个回答

3

如果您前往global.asax.cs并添加一个类似于现有默认路由的新路由,其模式为

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

在使用默认链接之前,您应该发现使用ActionLink调用时链接会正确生成。
因为我在手机上,所以我想详细说明一下(限制路由将是一个不错的主意,以防止该路由与默认路由产生干扰),但HTC键盘不太适合编码。

我打错了global.asa...这是正确的答案。当你(或其他人有机会时),我想知道何时应该使用routevalue字典以及如何使用... - makerofthings7
RouteValueDictionary 在某些情况下用于已经以字典形式存在的值,但是由于您不知道内容,因此无法将其转换为匿名类型。它也是以通用方式合并路由值的唯一方法(例如,在当前 URL 中添加页面编号,该 URL 可能具有未知数量的其他路由值)-这就是 MVC 在从当前请求生成链接时所做的所有操作。通常情况下,我只在必须使用其中之一时才使用 RouteValueDictionary,因为匿名类型方法更加简洁。 - Andras Zoltan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接