JavaScript重新路由的MVC异常

时间:2017-03-22 12:21:23

标签: javascript c# asp.net-mvc

我需要创建一个异常,它将从我的MVC视图重新路由到登录屏幕。

routes.MapMvcAttributeRoutes();
  routes.MapRoute(
    name: "Login",
    url: "{controller}/{action}/{id}",
    defaults: new {controller = "Account", action = "Login", id = UrlParameter.Optional }
  );

出于某种原因,当它是一个javascript请求时,无法在MVC中完成。

3 个答案:

答案 0 :(得分:0)

这就是我在我的应用上所做的事情:

int errorCode = 9999;         
if (isReroute) {
  this.Response.StatusCode = errorCode;
  Response.RedirectToRoute("Login");
  throw new System.Web.Http.HttpResponseException(
      new HttpResponseMessage(HttpStatusCode.ExpectationFailed));
}

this.Response.StatusCode使用您的路由配置并将页面重定向到所需的视图。

答案 1 :(得分:0)

在我的代码中,我创建了一个具有初始化方法的基本控制器,该方法在未经过身份验证时重定向到登录。

你可以用不同的方式写同样的东西,它会起作用。

public class BaseController :Controller
{
   protected override void Initialize(System.Web.Routing.RequestContext requestContext)
        {
            base.Initialize(requestContext);
            Test(); check the user
        }
}

public class TestController : BaseController
{
}

在基本控制器中,您可以执行适用于所有应用程序的代码。

答案 2 :(得分:0)

我认为@Gupta试图做的是以下内容:

public class MyNewClass : MyBaseClass
{
    public MyExceptionClass() : base()
    {
        //other stuff here
    }
}

public class MyBaseClass : Controller {
  private bool isRoute;
  private bool isAuthenticated;

  MyBaseClass(){
    isReroute = MethodCheckReroute();
    isAuthenticated = MethodCheckAuth();

    if (isReroute || !isAuthenticated) {
      Response.RedirectToRoute("Login");
      throw new System.Web.Http.HttpResponseException(
      new HttpResponseMessage(HttpStatusCode.ExpectationFailed));
   }
}