6

我试图通过发布而不是获取来导航到 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 到达删除操作,并且确认对话框没有发生。我已经在谷歌上搜索了几个小时,并且一直缠绕在车轴上。我究竟做错了什么?

4

2 回答 2

6

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

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

于 2010-06-17T21:02:43.757 回答
5

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

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

于 2011-10-04T07:24:10.967 回答