【发布时间】:2016-08-22 17:08:59
【问题描述】:
我在使用 ajax 重新加载部分视图时遇到了一个有趣的问题。我在主视图中有以下设置:
<div>
<div id="items">
@Html.Partial("SubView", Model.Items);
</div>
<div>
SubView一般是一个表中的item列表如下:
<table class="table table-striped">
<tr>
<th>Date</th>
<th>Time</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
@Html.HiddenFor(modelItem => item.Id)
<td>@Html.DisplayFor(modelItem => item.Date)</td>
<td>@Html.DisplayFor(modelItem => item.Time)</td>
<td>
@Html.ActionLink("Delete", "Delete", new { itemId= item.Id, page = Model.PageNumber }, new { @class = "deleteItem" })
</td>
</tr>
}
控制器中的DeleteItem Action基本上做了以下事情:
[HttpDelete]
public ActionResult DeleteItem(int itemId, int page)
{
this.dbService.DeletItem(expenseId);
return PartialView("SubView", this.GetPagedList(page));
}
在我在主视图中引用的脚本中,我有以下代码:
$(document).ready(function () {
// delete expense
$(".deleteItem").click(function () {
$.ajax({
url: this.href,
type: 'delete',
success: function (result) {
$("#items").html(result);
}
});
return false;
});
这第一次工作正常,但第二次它只加载部分视图 -> 因为 JavaScript 代码没有被执行......
我对这些东西比较陌生,我有点困惑这里发生了什么。 所有 3rd 方脚本都在 Layout.cshtml 中呈现
【问题讨论】:
-
请把DeleteItem的完整代码也发给你
-
加了,我说的很简单
标签: javascript c# asp.net-mvc asp.net-mvc-4