![](/img/trans.png)
[英]ASP.NET MVC RedirectToAction doesn't work after AJAX Post from view
[英]Is it bad to 'RedirectToAction' when using AJAX POST? (ASP.NET)
我是學習jQuery,Json,Ajax ..的新手,並且試圖清晰地理解這些概念,但遇到了一些困難。
我有一個工作的ajax POST Delete方法,但是我的教授。 已要求我在Controller中重構代碼以提高整體性能。
這是我在控制器中刪除
// POST: Course/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
Course course = courseService.GetCourseByID(id);
courseService.DeleteCourse(id);
return RedirectToAction("Index");
}
還有我的ajax
電話
$('#dialog-box').on("click", '#confirm-del', function () {
var token = $('input[name="__RequestVerificationToken"]').val();
var data = { id: id, __RequestVerificationToken: token };
$.ajax({
type: "POST",
url: "@Url.Action("Delete","Course")",
data: data,
//ajaxasync: true,
success: function () {
$("#dialog").dialog("close");
$('div.table-content').empty().load('.table-content');
//console.log("success");
},
error: function () {
console.log("failed");
}
});
});
我的教授 評論說:“ 刪除Post ajax調用會重新加載頁面或轉到ajax?看起來像是重新加載。更改ajax中某個元素的顏色以確認它會進入ajax調用。這是不必要的,並且如果ajax返回后您有更多邏輯,則可以因為您剛剛重新加載頁面,所以將無法執行任何操作。 ”
這是在要求澄清要做什么之后,因為我無法完全理解這個問題。
如果我只return View()
而不是return RedirectToAction (Index)
它將獲得更好的性能並解決問題。 在說什么?
你的教授是正確的。 如果打算通過Ajax調用該Action方法,則不應使用RedirectToAction。
相反,您需要返回JsonResult 。 例如,
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
Course course = courseService.GetCourseByID(id);
courseService.DeleteCourse(id);
return Json("Course was deleted successfully.");
}
僅供參考:在極少數情況下,如果確實需要重定向到Ajax調用內的其他頁面,則可以使用JavaScriptResult 。
return RedirectToAction("Index");
在您的情況下,返回HTTP狀態302以及要重定向的URL(主目錄/索引)。
由於您沒有在ajax處理程序中處理此HTTP狀態(成功處理2XX代碼以及錯誤4XX和5XX代碼),因此根本不在客戶端處理響應
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.