2011-06-23 40 views
3

出于某种原因,我的动作链接行为会将用户发送到一个陌生的地方。奇怪的mvc动作链接行为

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

从位置查看我想,导致用户浏览该位置属性的链接:

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

所以我想的HTML链接,并具有相同的名称的方法:“浏览”。

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

但URL结束:

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

我希望它最终是这样的:

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

API中的MVC 3似乎是:

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

这似乎是我是如何做到的,但我得到了意想不到的结果。

我在做什么错?

回答

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

你会想到intellisense我会注意到第五个参数。谢谢。 – micahhoover

3

您必须将null添加到您的Html.ActionLink参数的末尾,否则此length=8将始终尝试让您发疯。

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