重定向不发生在AJAX POST方法在ASP.净MVC

本文关键字:方法 ASP MVC POST AJAX 重定向 | 更新日期: 2023-09-27 18:17:08

我在ASP中有以下视图页面。净MVC

 @model ProjectName.Model.Sample
 @{
 }
 <div class="row">
  <div class="col-xs-12">
   <form class="form-horizontal" role="form">
      <div class="form-group">
        ..        
      </div>
      <div class="form-group">
        ..
      </div>
   </form>
  </div>
     <div class="col-sm-offset-1 col-sm-11">
     <button type="button" class="ss" id="savebutton">Save</button>
     <button type="button" class="ssd">Clear</button>
     </div>
     </div> 
     <script type="text/javascript">
     $("#savebutton").click(function () {
               $.ajax({
                    type: "POST",
                    dataType: "html",
                    url: '@Url.Action("AssignUsers", "Sample")',
                    data: { ... },               
                    success: function ()
                    {
                    },
                    error: {}
                });
            });
        }
    </script>

然后我有以下post方法来捕获Ajax post方法

    [HttpPost]
    public ActionResult AssignUsers(...) 
    {
        try
        {
                if (sucess)
                {
                   // I have an Area call Account therefor try to direct like below
                  return RedirectToAction("Index", "Sample", new { area = "Account" });
                }
                else
                {
                    ModelState.AddModelError("", "Please try again.");
                }
                return View();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

然后我把

return RedirectToAction("Index", "Sample", new { area = "Account" });

return Redirect("~/Account/Sample/Index");

但那曾经也不工作。

这个成功后,这不是直接到理想的位置,我的方法错了。

重定向不发生在AJAX POST方法在ASP.净MVC

你能做的就是将重定向动作添加到Javascript代码中,并在控制器上通过Json捕获它:

$("#savebutton").click(function () {
           $.ajax({
                type: "POST",
                dataType: "html",
                url: '@Url.Action("AssignUsers", "Sample")',
                data: { ... },               
                success: function (result)
                {
                    if (result.isSuccess==false)
                    {
                      //Add your redirect code here:
                       window.location.href = '@Url.Action("Index", "Sample")';
                    }
                },
                error: {}
            });
        });
    }

在你的控制器上,你将使用Json捕获它:

if (sucess)
      {         
        return Json(new {isSuccess = false, message = "Your message here"});
      }