使用操作过滤器返回JSON,然后重定向到Action方法



我已经创建了名为apicontroller的普通ASP MVC控制器以返回json结果。在其中一种动作方法中,我想返回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" } 
                    });
    }
}

假设您需要" notifyuser"的结果,并且在视图上消耗它,我将使用jQuery ajax呼叫处理您的问题。

简单地将您的" notifyuser"方法称为ajax。在Ajax调用的"成功"中,我将测试以查看JSON结果是否为" True"。如果是的话,我将重定向到新视图。设置" Window.Location ....."

如果您不使用JSON结果,则可以在" notifyuser"方法中重定向。

最新更新