Ajax.ActionLink不是POSTing

时间:2010-06-17 20:48:46

标签: ajax model-view-controller actionlink

我试图通过POST而不是GETting导航到MVC动作。 (该操作是DELETE,我不希望它通过外部链接访问。)

我在

生成的网格中使用链接
 Ajax.ActionLink("Remove", "Delete", new { saID = Model.Said, id = e.id }, new AjaxOptions { HttpMethod = "POST", Confirm = "Are you sure you want to delete this item?" })

生成以下HTML:

<a href="/Equipment/Delete/102424/229933" onclick="Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, confirm: 'Are you sure you want to delete this item?', httpMethod: 'POST' });">Remove</a>

我的问题是,当我点击链接时,我通过GET而不是POST来达到删除操作,并且没有进行确认对话框。我一直在谷歌搜索几个小时,只是不停地缠绕在轴上。我做错了什么?

2 个答案:

答案 0 :(得分:6)

您的网页上可能存在其他一些javascript错误,导致无法处理AJAX POST的javascript运行。在这种情况下,链接回退到它的默认行为(GET)。最简单的方法是使用IE8开发人员工具或Firefox / Firebug(我更喜欢这些),并在页面加载或调用您的操作时查看控制台中是否有任何错误。如果您使用的是IE,则需要使用Internet Options -> Advanced并取消选中Disable script debugging

修复您的javascript错误,我认为它只会开始工作。

答案 1 :(得分:5)

我想在接受的答案下添加此评论,但不知何故没有选项将其作为评论输入,因此将其添加为答案

就我而言,我必须在MicrosoftAjax.js和MicrosoftMvcAjax.js之前添加“jquery.unobtrusive-ajax.min.js”,然后动作链接开始启动ajax请求。但这是一个GET,我想要发帖,所以我只是在'AjaxOptions`中添加了HttpMethod = "Post"。就是这样。