簡體   English   中英

使用AJAX POST時'RedirectToAction'是否不好? (ASP.NET)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM