私はまだ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>
は私UserHistoryDetailコード:
@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を使用したことがありますか?
MVC4(またはそれ以上)を使用している場合は、[古代のスクリプトリファレンス](http://stackoverflow.com/questions/8782697/are-microsoftajax-js-microsoftmvcajax-js-and-microsoftmvcvalidation)は必要ありません。 -js-obsolete)です。 –
あなたは 'DeleteUserHistory'アクションを実行すると、ブール値ではなく更新された履歴リストを返すことができ、Ajaxの成功で結果を再バインドできます。 – Anil