2017-03-22 31 views
1

私のMVCビューからログイン画面にリルートする例外を作成する必要があります。JavaScript例外のMVC例外

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

何らかの理由で、何かの理由で、javascriptリクエストのときにMVCで実行できません。

答えて

0

は以下の通りです:

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)); 
    } 
} 
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は、あなたのルーティング設定を使用し、目的のビューにページをリダイレクトします。

0

私のコードでは、認証されていないときにログインするようにリダイレクトするメソッドを初期化したベースコントローラを作成します。

あなたは同じことを別の方法で書くことができ、それは動作します。

ベースコントローラーでは、すべてのアプリケーションで動作するコードを実行できます。私は@Guptaがやろうとしているものだと思う

+1

あなたは私にあなたがそれをやった方法の例を与えることができます。 –

+1

ベースが初期化された後、他のコントローラにどのようにアクセスしていますか?これは永続的なチェックですか? – JEuvin

+2

あなたはHttpContext、RequestContext、およびControllerContextのすべてにアクセスできます。コントローラーのアクション結果の前に火が沸っていることを忘れないでください。ポストコントローラコードの場合は、ActionFilterattributeを使用する必要があります。 – Adrian