如何在 MVC 中刷新视图
How refresh a view in MVC
我有 _LayoutOnecs.html 文件和视图加载其中的渲染体并在 table 中显示记录列表。在 table 列之一中,我有一个删除图标,点击它会转到控制器并从数据库中删除记录,一旦记录被删除,视图应该被刷新,所以我 return 将操作编辑到控制器,它获取所有记录
public ActionResult GetAdvertisementDetails()
{
var advertisementList = new AdvertisementManager().GetAdvertisementDetails();
return View("AdvertisementDetails", advertisementList);
}
public ActionResult DeleteAdvertisementDetails(int id)
{
new AdvertisementManager().DeleteAdvertisementDetails(id);
return RedirectToAction("GetAdvertisementDetails", "Advertisement");
}
一旦删除完成,它将转到 GetAdvertisementcontroller 和 return 查看,但已删除的记录位于 table 如果我按 F5 刷新页面,记录将从 table.
删除记录后如何自动刷新
查看代码
<div class="col-md-12 main_table">
<div class="table-responsive">
<table class="table" id="hom_table">
<tr>
<th>Advertisement Name</th>
<th>Link</th>
<th>Start Date</th>
<th>End Date</th>
<th width="100">Action</th>
</tr>
@foreach (var advertisements in Model)
{
<tr>
<td> @advertisements.Description</td>
<td> @advertisements.ImageUrl</td>
<td> @advertisements.StartDate</td>
<td> @advertisements.EndDate</td>
<td>
<a onclick="EditadvertisementDetails(@advertisements.AdvertisementId)">
<i class=" pull_Advt_details tbl_edit_btn fa fa-edit Editbutton"></i>
</a>
<a id="Deladvertisement" onclick="Deleteadvertisement(@advertisements.AdvertisementId)" >
<i class="tbl_del_btn fa fa-trash"></i>
</a>
</td>
</tr>
}
</table>
</div>
<!-- Responsive main table Ends -->
</div>
Ajax 调用保持在同一页面上。您在控制器方法中使用 return RedirectToAction("GetAdvertisementDetails", "Advertisement");
将被忽略。它也不需要重定向,因为您可以从 table
中删除该行
将 html 修改为(注意删除生成无效 html 的 id
属性):
<a class="delete" data-id="@advertisements.AdvertisementId>
<i class="tbl_del_btn fa fa-trash"></i>
</a>
并使用以下脚本调用控制器方法并删除行
var url = '@Url.Action("DeleteAdvertisementDetails", "Advertisement")';
$('.delete').click(function() {
var row = $(this).closest('tr');
$.post(url, { id: $(this).data('id') }, function(response) {
if(response) {
row.remove();
}
}).fail(function (response) {
// display error message?
});
});
并将控制器修改为
[HttpPost]
public JsonResult DeleteAdvertisementDetails(int id)
{
new AdvertisementManager().DeleteAdvertisementDetails(id);
return Json(true);
}
我有 _LayoutOnecs.html 文件和视图加载其中的渲染体并在 table 中显示记录列表。在 table 列之一中,我有一个删除图标,点击它会转到控制器并从数据库中删除记录,一旦记录被删除,视图应该被刷新,所以我 return 将操作编辑到控制器,它获取所有记录
public ActionResult GetAdvertisementDetails()
{
var advertisementList = new AdvertisementManager().GetAdvertisementDetails();
return View("AdvertisementDetails", advertisementList);
}
public ActionResult DeleteAdvertisementDetails(int id)
{
new AdvertisementManager().DeleteAdvertisementDetails(id);
return RedirectToAction("GetAdvertisementDetails", "Advertisement");
}
一旦删除完成,它将转到 GetAdvertisementcontroller 和 return 查看,但已删除的记录位于 table 如果我按 F5 刷新页面,记录将从 table. 删除记录后如何自动刷新
查看代码
<div class="col-md-12 main_table">
<div class="table-responsive">
<table class="table" id="hom_table">
<tr>
<th>Advertisement Name</th>
<th>Link</th>
<th>Start Date</th>
<th>End Date</th>
<th width="100">Action</th>
</tr>
@foreach (var advertisements in Model)
{
<tr>
<td> @advertisements.Description</td>
<td> @advertisements.ImageUrl</td>
<td> @advertisements.StartDate</td>
<td> @advertisements.EndDate</td>
<td>
<a onclick="EditadvertisementDetails(@advertisements.AdvertisementId)">
<i class=" pull_Advt_details tbl_edit_btn fa fa-edit Editbutton"></i>
</a>
<a id="Deladvertisement" onclick="Deleteadvertisement(@advertisements.AdvertisementId)" >
<i class="tbl_del_btn fa fa-trash"></i>
</a>
</td>
</tr>
}
</table>
</div>
<!-- Responsive main table Ends -->
</div>
Ajax 调用保持在同一页面上。您在控制器方法中使用 return RedirectToAction("GetAdvertisementDetails", "Advertisement");
将被忽略。它也不需要重定向,因为您可以从 table
将 html 修改为(注意删除生成无效 html 的 id
属性):
<a class="delete" data-id="@advertisements.AdvertisementId>
<i class="tbl_del_btn fa fa-trash"></i>
</a>
并使用以下脚本调用控制器方法并删除行
var url = '@Url.Action("DeleteAdvertisementDetails", "Advertisement")';
$('.delete').click(function() {
var row = $(this).closest('tr');
$.post(url, { id: $(this).data('id') }, function(response) {
if(response) {
row.remove();
}
}).fail(function (response) {
// display error message?
});
});
并将控制器修改为
[HttpPost]
public JsonResult DeleteAdvertisementDetails(int id)
{
new AdvertisementManager().DeleteAdvertisementDetails(id);
return Json(true);
}