奇怪的mvc actionlink行为

时间:2011-06-23 07:49:17

标签: asp.net-mvc-3

由于某种原因,我的操作链接行为会将用户发送到一个陌生的地方。

我有两个类:位置和属性。

从位置视图我想要一个链接,引导用户浏览该位置的属性:

@Html.ActionLink( "Browse", "Browse", "Property", new { id=item.ID } )

所以我希望HTML链接和方法具有相同的名称:“browse”。

我希望将ID发送到属性控制器,而不是在当前控制器/视图中使用它。请注意,“位置”一词不会出现在上面的行中。

但是URL结束了:

  

http://localhost:50164/Location/Browse?Length=8

我希望它最终像这样:

  

http://localhost:50164/Property/Browse?Length=8

MVC 3中的API似乎是:

ActionLink( "text to display as HTML link", "action name", "controller", "parameters" )

这似乎是我的表现,但我得到了意想不到的结果。

我做错了什么?

2 个答案:

答案 0 :(得分:5)

没有方法签名ActionLink(HtmlHelper, String, String, String, Object)

它使用的ActionLink(HtmlHelper, String, String, Object, Object)具有以下参数名称:

htmlHelper, linkText, actionName, routeValues, htmlAttributes

请改用此方法:

@Html.ActionLink( "Browse", "Browse", "Property", new { id=item.ID }, null)

具有以下参数名称:

htmlHelper, linkText, actionName, controllerName, routeValues, htmlAttributes

请参阅the full list of overloads

答案 1 :(得分:3)

您必须在null参数的末尾添加Html.ActionLink,否则此length=8会一直试图让您发疯。

@Html.ActionLink("Browse", "Browse", "Property", new { id = item.ID }, null)