2011-08-17 8 views
2

に前のアクションとコントローラの名前を取得します。 UrlReferrer.ToString();は、私のような現在のアクションやコントローラの名前を取得することができますMVCコントローラ

しかし、以前のアクションとコントローラの名前はmvc2コントローラでどのように取得できますか?

+1

あなたには問題ありませんが、参照元が偽造可能かどうかはわかりません。セキュリティ問題の場合はこれを考慮してください。 –

+1

これはあなたのために働くかもしれません:http://stackoverflow.com/questions/8830052/how-do-i-get-the-controller-and-action-names-from-the-referrer-uri – TestSubject

答えて

0

のasp.net MVCが原因HTTPのステートレスな性質のために、これを提供していませんが、あなたは、この使用してセッションやクッキーを保存することができます

0

私の最初の試みは、要求で参照URLから以前のパスを解析することであろうオブジェクト。

+1

私はrefferを得ることができますURLを次のようにします。string MyReferrer = Request.UrlReferrer.ToString();しかし、私はどのように私はURLから名前を抽出できますか分からないのですか? – eno

+0

簡単な方法は、 "/"の文字列を配列に分割し、コントローラとアクション名のそれぞれのスロットにアクセスすることです。また、AbsolutePathプロパティ(Request.UrlReferrer.AbsolutePath)を使用して、ドメインの後の部分だけを取得することもできます。もちろん、アクションが存在するかどうかは、その点をテストし、「インデックス」またはデフォルトアクションが何であるかを想定する必要があります。 – coder77

0

tempdataにこの値を格納するか、実際のルートオブジェクトを取得するために参照ルート(URL経由)を参照してから、コントローラとアクションプロパティを確認します。これを得るには、URLからルートを検索する必要があります。これを行うには、ルートを探すPhil Haacksのコード(他にもあります)を参照してください。

http://blogs.msdn.com/b/simonince/archive/2011/01/28/unit-testing-asp-net-mvc-routes.aspx

0

ASP.NET MVC TempDataをの使用を検討してくださいに掲載されている様々な方法があります。

http://rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3-applications

それはあなたが呼ばれる最後のアクションのように、ルーティング情報をそこに保存することができますので、現在の要求と次の1間で永続性あなたを与えるだろう。

TempDataのデータは、次の要求が処理された後にメモリから解放されます(ASP.NETセッションオブジェクトとは反対に、セッションのタイムアウトまたは終了時にメモリを解放します)。

9

これは動作するはずです。

// Home is default controller 
var controller = (Request.UrlReferrer.Segments.Skip(1).Take(1).SingleOrDefault() ?? "Home").Trim('/'); 

// Index is default action 
var action = (Request.UrlReferrer.Segments.Skip(2).Take(1).SingleOrDefault() ?? "Index").Trim('/'); 
+0

あなたのソリューションは機能します!ありがとう:) – praguan

関連する問題