我需要创建一个异常,它将从我的MVC视图重新路由到登录屏幕。
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Login",
url: "{controller}/{action}/{id}",
defaults: new {controller = "Account", action = "Login", id = UrlParameter.Optional }
);
出于某种原因,当它是一个javascript请求时,无法在MVC中完成。
答案 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));
}
}