7

コントローラーには、GET アクションのペアからヒットする POST アクションがいくつかあります。検証が失敗した場合、POST の元であるアクションのビューをレンダリングしたいと考えています。例えば:

~/accounts POSTs to ~/accounts/disable - 検証エラーで "index" ビューをレンダリングします ~/accounts/profile POSTs to ~/accounts/disable - 検証エラーで "profile" ビューをレンダリングします

サーバー変数からリファラー (sic) を取得し、それを解析してアクションを理解することができますが、私が望むことを行う何かが組み込まれていることを望んでいたか、他の誰かがすでにこれを行っており、私が盗むことができます.

ControllerContext.RouteData プロパティには、現在のリクエストに関する情報のみが含まれており、参照元の (sic) リクエストではないようです...?

私は ASP.NET MVC ベータ版を使用しています。

4

1 に答える 1

2

MVC Contrib には、ルートを取得するための String の拡張メソッドが含まれています (具体的には here )。理論的には、これでできます

RouteData referrer = Request.UrlReferrer.PathAndQuery.Route();

または、もちろん、それを HttpRequest の拡張メソッドにラップして、次のことができるようにします。

RouteData referrer = Request.ReferrerRoute();

ただし、これは単体テストを目的としており、Rhino モックを使用して GetRouteData() が必要とする HttpContextBase を作成します。幸いなことに、ほとんどモックを作成するだけで済むようです。そのため、HttpContextBase から派生した独自の FakeHttpContext クラスを作成すれば、Rhino モックを回避できる可能性があります。

于 2009-03-10T23:23:21.843 に答える