2017-03-07 71 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

相关问题