2011-09-16 206 views
1

如果我运行以下代码,我收到错误消息“在控制器上找不到公共操作方法'PostAction'...”。使用提琴手显示GET请求而不是POST。我试图用Ajax.BeginForm替换Html.BeginForm,但它没有帮助。那么我做错了什么?谢谢。如何让Ajax.ActionLink发送Http Post请求?

@using (Html.BeginForm()) 
{ 
    @Ajax.ActionLink("ClickMe", "PostAction", new AjaxOptions { HttpMethod = "POST" }) 
} 

[HttpPost] 
public virtual ActionResult PostAction() { ... } 

UPDATE,附加信息:这就是MVC如何生成HTML锚:

<a onclick="Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, httpMethod: 'POST' });" href="/.../PostAction/">ClickMe</a> 
+1

超链接== GET – SLaks

+1

没错,但它不只是超链接,MVC处理它的点击事件并尝试在POST模式下运行它,至少这是它假设的工作方式。 – YMC

回答

1

哦,我只是忘了添加对MicrosoftAjax.js和MicrosoftMvcAjax.js。当我添加它们时,一切正常。对不起,这个愚蠢的帖子

+0

这些在MVC3和MVC4中已过时。请参阅:http://stackoverflow.com/a/8784998/210780 – ashes999