2017-01-08 19 views
1

我試圖在ASP.NET Core中創建一個簡單的微調框,它將在持久控制器的操作中顯示。ASP.Net中的data-ajax-begin腳本Core MVC塊重定向

代碼按預期工作,但它似乎阻止控制器操作中的重定向。 有什麼辦法可以在這種情況下重定向工作?

我Index.cshtml控制器的行動

<script src="~/lib/jquery/dist/jquery.min.js"></script> 
<script src="~/lib/jquery-ajax-unobtrusive/src/jquery.unobtrusive-ajax.js"></script> 

<script type="text/javascript"> 
    function onBegin() { 
     $("#divLoading").html('<image src="~/images/ajax-loader.gif" alt="Loading, please wait" />'); 
    } 
    function onComplete() { 
     $("#divLoading").html(""); 
    } 
</script> 

<form data-ajax="true" data-ajax-begin="onBegin" data-ajax-complete="onComplete" asp-action="LoadLongLasting" asp-controller="Home"> 
    <input type="submit" value="Load Long lasting"/> 
</form> 
<div id="divLoading"></div> 

例子:

public ActionResult LoadLongLasting() 
    { 
     bool result = GetLongLastingResult(); 

     if(result) 
     { 
      return View(); 
     } 

     return RedirectToAction("Error"); 
    } 
+0

AJAX的整點是住宿** **相同​​的頁面上。 Ajax調用永遠不會重定向,所以你的'return RedirectToAction(「Error」);'毫無意義 –

+0

好的,那麼最好的做法是在請求開始時顯示一個已實現的微調器,並在沒有Ajax的情況下隱藏它。我相信這是一個很常見的情況,但說實話我不知道。 – Herman

回答

1

您需要返回JSON和寫改向在這樣的onSuccess功能。

查看:

<script type="text/javascript"> 
    function onBegin() { 
     $("#divLoading").html('<image src="~/images/ajax-loader.gif" 
alt="Loading, please wait" />'); 
    } 
    function onSuccess() { 
     if(data.status === 1) { 
      window.location.href = "/yourpage"; 
     } 
    } 
    function onComplete() { 
     $("#divLoading").html(""); 
    } 
</script> 

<form data-ajax="true" data-ajax-begin="onBegin" data-ajax-complete="onComplete" data-ajax-success="onSuccess" asp-action="LoadLongLasting" asp-controller="Home"> 
    <input type="submit" value="Load Long lasting"/> 
</form> 

控制器:

public ActionResult LoadLongLasting() 
{ 
    bool result = GetLongLastingResult(); 

    if(result) 
    { 
     return View(); 
    } 
    return Json(new { status = 1 }); 
    //return RedirectToAction("Error"); 
}