2017-04-22 19 views
0

私はまだasp.net mvcの新機能ですが、部分的なビューのリストを削除したいのですが、削除は機能していますが、新しいリストを表示するにはページ全体をリロードする必要がありますASP.Net MVCページ全体を読み込まずに削除

私が欲しいもの

が部分図は、新しいリストを表示している後に無負荷でページ全体を削除して、部分的にしか表示が更新されるので、ここで

は私のコードです:

マイビューのコンテンツ部分図の一部:

@model cc.Models.User 

@{ 
    Layout = "~/Views/Shared/_MemberLayout.cshtml"; 
}  

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/MicrosoftMvcValidation.debug.js")" type="text/javascript"></script> 

<body class="container body-content"> 

<div id="partialView1"> 
    @Html.Action(...) 
</div> 

<div id="partialView2"> 
    @Html.Action(...) 
</div> 

<div id="partialView4"> 
    @Html.Action(...) 
</div> 

<div id="partialView3" class="col-md-8 col-sm-1"> 
    @Html.Action("UserHistory", "User") 
</div> 


</body> 

ここはUserHistoryの部分図です。私はajaxを使用しようとしましたが、動作しません。私はすでにここ

$(this).closest('.historyRow').remove(); 

$("a.deleteHistory").live("click", function() { 
    $(this).parents("div.historyRow:first").remove(); 
    return false; 
}); 

を使用しようとした私のコードです:ここでは

@model cc.Models.UserHistory 

@{  
    Layout = null; 
} 

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/MicrosoftMvcValidation.debug.js")" type="text/javascript"></script> 


<div id="formHistory"> 
    <div id="historyDetail"> 
     <div id="editDataHistoryUser"> 
      @foreach (var item in Model.History) 
      { 
       @Html.Partial("UserHistoryDetail", item) 
      } 
     </div> 
     @Html.ActionLink("Add Form", "AddUserHistory", null, new { id = "btnFormHistory" }) 
    </div> 
</div> 



<script type="text/javascript"> 



$("#btnFormHistory").click(function() { 
    $.ajax({ 
     url: this.href, 
     cache: false, 
     success: function (html) { $("#editDataHistoryUser").append(html); } 
    }); 
    return false; 
}); 

$('#formHistory').on('click', '.deleteHistory', function() { 
    var id = $(this).data('id'); 
    if (id == 0) { 

     $(this).closest('.historyRow').remove(); 

     //$("a.deleteHistory").live("click", function() { 
     // $(this).parents("div.historyRow:first").remove(); 
     // return false; 
     //}); 
    } else { 

     var url = '@Url.Action("DeleteUserHistory", "User")'; 
     $.post(url, { ID: id }, function (response) { 
      if (response) {      
       $(this).closest('.historyRow').remove(); 

       //$("a.deleteHistory").live("click", function() { 
       // $(this).parents("div.historyRow:first").remove(); 
       // return false; 
       //});     

      } 
     }).fail(function (response) { 

     }); 
    } 
}); 

</script> 

は私UserHistoryDe​​tailコード:

@model cc.Models.IUserHistory 

@{ 
    Layout = null; 
} 


<div id="formUserHistoryDetail"> 
    @using (Ajax.BeginForm("UserHistoryDetail", "User", new AjaxOptions { HttpMethod = "POST" })) 
    { 
    <div id="historyRow"> 
     <div>@Html.LabelFor(model => model.IDHistory, new { style = "display:none;" })</div> 
... 
     <a href="#" class="deleteHistory" data-id="@Model.IDHistory">delete</a> 
        </div> 


       } 

</div> 

そして、ここでは私のするJsonResultですボタン削除がクリックされたとき:

[HttpPost] 
    public JsonResult DeleteUserHistory(string ID) 
    { 

     db.delUserHistory(ID); 

     return Json(true); 
    } 

解決策がまだ見つかりませんか、間違った方法でajaxを使用したことがありますか?

+0

MVC4(またはそれ以上)を使用している場合は、[古代のスクリプトリファレンス](http://stackoverflow.com/questions/8782697/are-microsoftajax-js-microsoftmvcajax-js-and-microsoftmvcvalidation)は必要ありません。 -js-obsolete)です。 –

+0

あなたは 'DeleteUserHistory'アクションを実行すると、ブール値ではなく更新された履歴リストを返すことができ、Ajaxの成功で結果を再バインドできます。 – Anil

答えて

0

のはDeleteUserHistory投稿のURLが「//[コントローラ]」であると仮定しよう:「/ UserHistory」

$('.deleteHistory').click(function(){ 
    var url = '/UserHistory'; 
    $.ajax({ 
    type: "POST", 
    url: url, 
    data: data, 
    success: onSuccessCallback 
    }); 
}); 

あなたが本当にやるべきことは、データを管理し、表示するビューを使用するWEBAPIを使用しています。

削除の場合は、「post」ではなく「delete」と入力します。投稿は「追加」に使用する必要があります。

関連する問題