6

我正在尝试做的事情:尝试使用“正确的”HTTP Delete 删除记录。

控制器代码:

    [HttpDelete]
    public void DeleteRun(int RunId)
    {
        repository.RemoveEntry(RunId);

    }

剃刀视图:

             @Ajax.ActionLink("Delete","DeleteRun",new {RunId = run.RunId},
                         new AjaxOptions() { Confirm = "Are you sure you want to delete this entry?",
                                            HttpMethod = "DELETE",
                                            OnComplete = string.Format("DeleteRunInTable({0})",run.RunId)

                         })

Javascript(在单独的包含文件中):

   function DeleteRunInTable(RunId) {
       $("tr[data-runid=" + RunId).remove();
}

链接正在创建的 actionlink 方法:

 <a data-ajax="true" data-ajax-complete="DeleteRunInTable(11)" data-ajax-confirm="Are you sure you want to delete this entry?" data-ajax-method="DELETE" href="/Runs/Delete/11">Delete</a>

不确定 javascript 部分是否有效,但不必担心。尝试一次迈出一步:)。现在它就像一个传统标签一样工作,当我点击链接时,它只是在做一个 GET 请求的 href。当然,由于我在控制器上放置了 [HTTPDelete],我得到了 404 错误。我对 Web 开发很陌生,所以我确信在 javascript 或 jquery 中还有其他方法可以做同样的事情,但我现在只是在做我所知道的。

4

2 回答 2

9

这应该像我最近自己做的那样工作,我所要做的就是HttpMethodAjaxOptions参数中指定。

您还需要确保页面中包含jquery.unobtrusive-ajax.js脚本。

于 2011-08-03T22:25:42.500 回答
4

这实际上是一个简单的解决方案......我错过了 jquery.unobtrusive-ajax.min.js :P。我将把帖子留在这里,所以任何试图做与我正在做的事情类似的事情的人都会知道它是可能的,只要确保你包含 jquery 和 jquery.unobtrusive。

编辑:如果您使用 MVC3,只是为了澄清 ActionLink 与 JQuery 一起使用,否则它使用 microsoft javascript 库。

于 2011-08-03T22:53:15.170 回答