【发布时间】:2014-09-07 07:10:14
【问题描述】:
我在使用 MVC 5 中的 ActionLink 时遇到问题。
@Html.ActionLink("View Commissions", "/" + item.Id.ToString, "Commissions")
@Html.ActionLink("View Commissions", "Index", "Commissions", New With {Key .payRollId = item.Id}, Nothing)
这两个 ActionLink 应该完成同样的事情,但我更喜欢使用第二个。不幸的是,它们产生了不同的 URL。第一个创建http://mysite/Commissions/3。第二个创建http://mysite/Commissions?payRollId=3。
在我的佣金控制器中,我有以下代码:
' GET: Commissions/5
<Route("Commissions/{payRollId:min(1)}")>
Async Function Index(ByVal payRollId As Integer?) As Task(Of ActionResult)
If IsNothing(payRollId) Then
Return New HttpStatusCodeResult(HttpStatusCode.BadRequest)
End If
Return View(Await ...query...).ToListAsync)
End Function
这成功处理了第一个 ActionLink 的 URL。第二个导致 404 错误。我没有任何其他 RouteAttributes 或用于佣金的映射路线。根据这个attribute routing article,第二个 ActionLink 应该创建成功处理请求的漂亮 URL(无查询字符串)。
我错过了什么?如何让第二个 ActionLink 生成正确的 URL (Commissions/3) 以匹配 RouteAttribute?
【问题讨论】:
标签: vb.net asp.net-mvc-5 asp.net-mvc-routing actionlink attributerouting