1

コントローラーにこのメソッドがあります

[HttpDelete]
public void DeleteDocument(int id)
{
   //Here I do the deletion in the db
}

私がこれを持っているビューでは、部分的なビューを返すメソッドを呼び出します

@{ Html.RenderAction("GetDocumentsByMember"); }

GetDocumentsByMember メソッド

    public ActionResult GetDocumentsByMember()
    {
        var companyGuid = HttpContextHelper.GetUserCompanyGuid();

        var documents = _service.GetUploadedDocumentsByMember(companyGuid);

        return PartialView(documents);
    }

そして、部分的なビュー

@model IEnumerable<GradientCapital.DomainModel.Entity.Document.Document>
<div id="uploadeddocuments">
    @*Here there's a table and at one of the columns there's the next link*@

    <td id="delete">
        @Ajax.ActionLink("Delete", "DeleteDocument", new { id = document.Id },
        new AjaxOptions
            {
               Confirm = "Are you sure you want to delete?",
               HttpMethod = "DELETE",
               OnComplete = "deleteComplete"
            })
    </td>
</div>

そしてdeleteCompleteはすべてをリフレッシュするだけです

<script type="text/javascript">
    function deleteComplete() {
        window.location.reload();
    }
</script>

簡単な質問に対する非常に長い (正しくフォーマットされていますか?) コードです。この deleteComplete 関数を呼び出す代わりに、ここで ajaxoption UpdateTargetId を機能させることはできません。何か案が?

ありがとう

4

1 に答える 1

4

ページ全体をリロードする代わりに、GetDocumentsByMemberAJAXを使用してアクションを呼び出し、実際に変更されたDOMの部分のみを更新することができます。

<script type="text/javascript">
    function deleteComplete() {
        $.ajax({
            url: '@Url.Action("GetDocumentsByMember")',
            type: 'GET',
            cache: false,
            success: function(result) {
                $('#uploadeddocuments').html(result);
            }
        });
    }
</script>

また、Delete呼び出しが実際に成功した場合にのみ更新する必要があるため、OnSuccess = "deleteSuccess"代わりに使用することをお勧めします。AJAX呼び出しが成功したかどうかに関係なくOnComplete = "deleteComplete"、コールバックは常に呼び出されることを忘れないでください。OnComplete

于 2013-01-27T15:15:30.197 に答える