2016-06-27 13 views
0

私のコントローラ内からURLリライトをしようとしています。コントローラからのASP.NET MVCリライトパス

私はApplication_BeginRequestからこれを達成できましたが、コントローラレベルでいくつかの依存関係を必要とし、書き換えを行うかどうかを決定します。

私はコントローラから試しましたが、何の効果もありません。

コントローラからのURL書き換えは可能ですか?

元のURLを保持する必要があることに注意してください。

+0

あなたはルーティングからそれを実行しようとしましたがありますか? –

+1

URLの書き換えは、リクエストから入ってくるURLを受け取り、それをハンドラに渡す前に別のものに書き換えます。これは、リクエストされたものとは異なるファイル*をサーバに送る必要がある場合に便利です。ルーティングはURL *をハンドラ(MVCコントローラアクションメソッド)に直接マッピングします。 MVCはファイルシステムベースではないので、URLを*書き換える必要はありませんが、URLをルーティングを使って好きなように指定することはできます。どうして中間の人を切り取ってルーティングを使うのではないのですか? – NightOwl888

+0

私は元のURLを保持する必要があることを忘れていました。ユーザーが/ controller/ActionAに移動する場合は、移動したURLを保持する必要があります。 –

答えて

0

質問が少し奇妙なのは、ルートアクションがコントローラレベルに実行される前に発生する必要があるからです。 あなたが本当にwantoコントローラで書き換えに影響を与えるような何かをした場合、あなたは以下のようにそれを行うことができます。

file controller.cs 

void func(){ 
//do rewrite when application begin to request,via make a flag 
//1 means yes,0 means no 
application["do_rewrite"] = 1; 
} 

file application.cs 
void Application_BeginRequest(){ 
    if(application["do_rewrite"] == 1){ 
    //do rewrite 
    } 
} 
関連する問題