2017-03-07 72 views
0

我已經創建了正常的名爲ApiController的asp mvc控制器來返回json結果。在它的一個action方法中,我想返回json,然後重定向到另一個action方法。使用動作過濾器返回json,然後重定向到動作方法

返回JSON的API請求後,我一直在使用SignalR

我試着用Action filter張貼通知,但它不是重定向到其它操作方法。

處理法1

[NotifyUserActionFilter] 
public ActionResult NotifyUser(int ID) 
{  
    return Json("true",JsonRequestBehavior.AllowGet); 
} 

處理法2

//the returning view has signalR javascript in it 
    public ActionResult ThankYou() 
    { 
     string Tempval = TempData["tempID"].ToString(); 
     return View(); 
    } 

措施篩選

public class NotifyUserActionFilter : System.Web.Mvc.ActionFilterAttribute 
{ 
    public override void OnResultExecuted(ResultExecutedContext filterContext) 
    { 

     var ID = filterContext.HttpContext.Request.Params["ID"]; 

     filterContext.Controller.TempData.Add("tempID", ID); 

     filterContext.Result = new RedirectToRouteResult(
       new RouteValueDictionary 
        { 
         { "controller", "Api" }, 
         { "action", "Thankyou" } 
        }); 

    } 
} 

回答

0

ASSU明確你需要從「NotifyUser」的結果,你在視圖上使用它,我會用jQuery AJAX調用來處理你的問題。

簡單地說,在Ajax中調用你的「NotifyUser」方法。在ajax調用的「成功」中,我將測試json結果是否爲「true」。如果是的話,我會重定向到新的視圖。設置「window.location .....」

如果你不使用json結果,那麼你可以在「NotifyUser」方法中重定向。

+0

「NotifyUser」將被移動應用程序使用。其實我想返回json的結果,當「NotifyUser」將被調用,然後重定向到查看「ThankYou」,我正在運行signalR腳本 – Lishna

+0

您需要在客戶端(移動)應用程序中執行重定向。如果您使用NotifyUser的結果,那麼您將重定向到新的視圖「Thankyou」。 – KevDevMan

相關問題