2

Ajax 経由で DELETE (推奨) または POST を実行しようとしています。

$(document).ready(function () {
    $("a.deleteOne").click(function () {
        var id = $(this).parents('td:first').children('.hiddenId').val();
        var title = $(this).parents('tr:first').children('td:first').text();
        if (confirm("Really delete the [" + title + "] document?")) {
            $.ajax({
                type: "POST",
                url: "/WebApp/Area/Documents/Delete/" + id,
                //data: { id: id },
                success: function () { alert("Document [" + title + "] deleted."); },
                failure: function () { alert("Document [" + title + "] was NOT deleted."); }
            });
        }
    });
    return false;
});

何らかの理由で、コントローラーのアクションが呼び出されていません。

Action code looks like:
[ValidateAntiForgeryToken]
[Transaction]
[AcceptVerbs(HttpVerbs.Post)]
//[AcceptVerbs(HttpVerbs.Delete)]
public ActionResult Delete(int id)
{
    if (!BaseAuthorizationProvider.HasPermissionToPerform(App.Core.Security.Operations.CreateDocumentTask))
    {
        HandlePermissionException();
    }
    ActionConfirmation deleteConfirmation = DocumentManagementService.Delete(id);
    TempData[ControllerEnums.GlobalViewDataProperty.PageMessage.ToString()] = deleteConfirmation.Message;
    return RedirectToAction("Index");
}

私は何が欠けていますか?

4

3 に答える 3

1

これを試してみてください。少し異なります。エリアを使用していると思います。YourController と YourArea を置き換えるだけです。

$.ajax({
    type: "POST",
    url: '@Url.Action("Delete", "YourController", new { area = "YourArea" })',
    data: { id: id },
    success: function () { alert("Document [" + title + "] deleted."); },
    error: function () { alert("Document [" + title + "] was NOT deleted."); }
});
于 2013-01-17T00:29:29.293 に答える
0

check URL Template of your Action also check the method prototype which needs to be String

于 2013-01-17T06:09:22.903 に答える
0

私のサイトが DELETE 動詞を受け入れていなかったことが判明しました。WebDAVModule を削除すると、機能し始めました。では、AuthToken に関する次の問題に進みます。

<system.webServer>
<modules>
<remove name="WebDAVModule" />
...
于 2013-01-22T20:00:09.707 に答える