C# 什么';“这是返回”的最佳方式;“未经验证的”;从控制器操作到Ajax请求对象的消息?

C# 什么';“这是返回”的最佳方式;“未经验证的”;从控制器操作到Ajax请求对象的消息?,c#,ajax,model-view-controller,C#,Ajax,Model View Controller,我有一个C#MVC应用程序,它严重依赖于。我正在使用JavaScript框架,但这在这里并不重要 如果一个登录的用户在一个页面上,并且他们的会话超时,我需要在下一个Ajax请求时通知用户这已经发生了 例如,有一个组合框,用于执行自动搜索并显示结果。如果会话超时,他们在这个框中输入信息,Ajax请求就会发送到服务器。在执行操作之前,我想确定他们没有登录,并在对象内部返回一条消息,详细说明失败的原因,以便创建弹出窗口或重定向 对于奖励积分,如果我不必在我已经采取的300多个行动中实施此解决方案,这将

我有一个C#MVC应用程序,它严重依赖于。我正在使用JavaScript框架,但这在这里并不重要

如果一个登录的用户在一个页面上,并且他们的会话超时,我需要在下一个Ajax请求时通知用户这已经发生了

例如,有一个组合框,用于执行自动搜索并显示结果。如果会话超时,他们在这个框中输入信息,Ajax请求就会发送到服务器。在执行操作之前,我想确定他们没有登录,并在对象内部返回一条消息,详细说明失败的原因,以便创建弹出窗口或重定向


对于奖励积分,如果我不必在我已经采取的300多个行动中实施此解决方案,这将更加容易。类或方法上的属性将是一个很好的解决方案,并与我目前为非Ajax“GET”请求所做的工作相一致。

这就是我提出的解决方案

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
sealed public class RedirectIfUserNotLoggedOnAttribute : ActionFilterAttribute
{
public override void OnActionExecuting (ActionExecutingContext filterContext)
  {
    if (!IsUserLoggedOn)
        {
          filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new
                                                                                      {
                                                                                        controller = "User",
                                                                                        action = "WarnLogOutAsJson",
                                                                                      }));
        }
}
}
指定的控制器操作应返回JsonResult

当然,您需要为GET请求或响应不是Json形式的任何其他请求创建不同的属性