2013-04-10 38 views
5

私はMVC4で領域を使用しているサイトを持っています。MVCコントローラ。領域で実行

return RedirectToAction("OtherAction", "Controller", new { area = "Area" }); 
:私はこのようなエリア/コントローラ/ OtherActionへの単純なリダイレクトを行う場合

public ActionResult Index() 
{ 
    return View(); 
} 

public ActionResult OtherAction() 
{ 
    return View("Index"); 
} 

これは素晴らしい作品:一部の地域では、私はこのアクションを伴うコントローラ(コントローラ)を持っている(エリアをそれを呼び出すことができます)

しかし、私はこのようにリダイレクトするために(check here why)必要があります。

RouteData routeData = new RouteData(); 
routeData.Values.Add("area", "Area"); 
routeData.Values.Add("controller", "Controller"); 
routeData.Values.Add("action", "OtherAction"); 
ControllerController controller = new ControllerController(); 
controller.Execute(new RequestContext(new HttpContextWrapper(HttpContext.ApplicationInstance.Context), routeData)); 

そして、その場合には、それは動作しませんが。最後の行の後、OtherActionメソッドが実行され、その後、このコードの最後の行で、それはこの例外をスロー:ビューを

「インデックス」またはそのマスターが見つからなかったか、何のビュー・エンジンは 検索場所をサポートしていません。次の場所は は、検索した:

〜/ビュー/コントローラ/ Index.aspx

〜/ビュー/コントローラ/ Index.ascx

〜/ビュー/共有/ Index.aspx

〜/ビュー/共有/ Index.ascx

〜/ビュー/コントローラ/ Index.cshtml

〜/ビュー/コントローラ/ Index.vbhtml

〜/ビュー/共有/ Index.cshtml

〜/ビュー/共有/ Index.vbhtml

なぜ、この出来事とどのように私はそれを修正することができますがありますか?

答えて

9

routeDataで正しく領域を設定していないため、ASP.NET MVCは "ルート"コンテキストでビューを検索しようとし、領域ビューディレクトリ内では検索しないため、例外が発生します。

DataTokensのコレクションにしていないValues

RouteData routeData = new RouteData(); 
routeData.DataTokens.Add("area", "Area"); 
routeData.Values.Add("controller", "Controller"); 
routeData.Values.Add("action", "OtherAction"); 
//... 
に設定する areaキーニーズ
関連する問題