3

コントローラーからjqueryにビューを返す作業をしていますが、ビューが返されますが、返されたビューからdivを抽出したいです。現在のコードは次のとおりです

       public ActionResult DeleteItem(int pid)
                {
                 //my logic goes here
                    retutn View("SomeView",model);
                    }

                 Jquery


enter code here
          script type="text/javascript">
              $(document).ready(function () {

        $('.Remove').click(function () {
             var value = $(this).attr('id');
            $.ajax({
                cache:true,
                type: "POST",
                url: "@(Url.Action("DeleteItem", "ControllerName"))",
                data: "pid=" + value,
                success: function (data) {
                    $("body").html(data);

                },
                error:function (xhr, ajaxOptions, thrownError){
                    alert('Failed to subscribe.');

                }, 
                complete: function() {   } 
           });       
            return false;
                 });
                      });

        </script>

私の現在のロジックはビューを返し、合計ビュー、つまり html+body をページのボディ部分に割り当てます。これは、html 部分を 2 回表示します。返されたビューから div を取得してリロードする方法はありますか。事前に感謝

4

2 に答える 2

1

コントローラー アクションは を返す必要があります。それ以外のPartialViewResult場合は、応答でレイアウト ページが返されます。両方のシナリオに対応したい場合は、リクエストが AJAX リクエストであるかどうかを確認できます。

public ActionResult DeleteItem(int id) {
    // delete your item

    if (Request.IsAjaxRequest()) {
        // return just the partial view
        return PartialView("yourview");
    }


    // otherwise handle normally
    return RedirectToAction("list");
}

View戻ると戻るの違いを理解するには、「return View()」と「return PartialView()」の違いは何ですか」PartialViewを参照してください。

于 2013-03-28T23:57:02.293 に答える
0
      script type="text/javascript">
          $(document).ready(function () {

    $('.Remove').click(function () {
         var value = $(this).attr('id');
        $.ajax({
            cache:true,
            type: "POST",
            url: "@(Url.Action("DeleteItem", "ControllerName"))",
            data: "pid=" + value,
            success: function (data) {
                     var t=$(data).find('.divtoreplacewith');
                               $('.divtoreplace').replaceWith(d);
         //Wasted my 2 days for above two lines.But satisfied with solution,
          //Both div are same but '.divtoreplacewith' is having new data,And I have replaced div with that div that's all
            },
            error:function (xhr, ajaxOptions, thrownError){
                alert('Failed to subscribe.');

            }, 
            complete: function() {   } 
       });       
        return false;
             });
                  });
于 2013-03-29T06:13:30.420 に答える