AspMVC删除数据后如何刷新索引页
Asp MVC how refresh index page after data deletion
在 ASP MVC 5 中我有一个 table 每行都有一个删除按钮。当我单击 "Delete" 按钮时,我会显示一个模式确认 (bootstrap) 对话框:如果用户确认删除,我将调用以下 javascript 函数:
function confirmedDeletion(){
$.post("@Url.Action("Delete", "MyController")", { id : id } , function (data) {
});
}
因此在控制器中称为删除操作:
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
...
...
db.SaveChanges();
return RedirectToAction("Index");
}
调用并执行了 Index 操作,但未刷新 html 页面(模态对话框保持可见且 table 数据未更新。浏览器未显示图标刷新页面)
如何重新加载索引页?
您无法通过重定向响应 ajax 调用。您可以使用 javascript:
在 ajax 回调函数中重新加载页面
function confirmedDeletion(){
$.post("@Url.Action("Delete", "MyController")", { id : id } , function (data) {
if(data.Success) {
window.location.reload();
}
});
}
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
...
...
db.SaveChanges();
return Json(new { Success = true; });
}
作为刷新页面的替代方法,您可以从 table:
中删除已删除的行
function confirmedDeletion($button){
$.post("@Url.Action("Delete", "MyController")", { id : id } , function (data) {
if(data.Success) {
$button.closest('tr').remove();
}
});
}
在成功调用后删除行(如 Zabravsky 的回答)似乎是最干净的答案。但是如果你想在删除调用后刷新整个页面,似乎你不应该使用 Ajax,你应该直接提交表单。
在 ASP MVC 5 中我有一个 table 每行都有一个删除按钮。当我单击 "Delete" 按钮时,我会显示一个模式确认 (bootstrap) 对话框:如果用户确认删除,我将调用以下 javascript 函数:
function confirmedDeletion(){
$.post("@Url.Action("Delete", "MyController")", { id : id } , function (data) {
});
}
因此在控制器中称为删除操作:
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
...
...
db.SaveChanges();
return RedirectToAction("Index");
}
调用并执行了 Index 操作,但未刷新 html 页面(模态对话框保持可见且 table 数据未更新。浏览器未显示图标刷新页面)
如何重新加载索引页?
您无法通过重定向响应 ajax 调用。您可以使用 javascript:
在 ajax 回调函数中重新加载页面function confirmedDeletion(){
$.post("@Url.Action("Delete", "MyController")", { id : id } , function (data) {
if(data.Success) {
window.location.reload();
}
});
}
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
...
...
db.SaveChanges();
return Json(new { Success = true; });
}
作为刷新页面的替代方法,您可以从 table:
中删除已删除的行function confirmedDeletion($button){
$.post("@Url.Action("Delete", "MyController")", { id : id } , function (data) {
if(data.Success) {
$button.closest('tr').remove();
}
});
}
在成功调用后删除行(如 Zabravsky 的回答)似乎是最干净的答案。但是如果你想在删除调用后刷新整个页面,似乎你不应该使用 Ajax,你应该直接提交表单。