エリアを使用する MVC4 のサイトがあります。一部のエリア (エリアと呼びましょう) には、次のアクションを持つコントローラー (コントローラー) があります。
public ActionResult Index()
{
return View();
}
public ActionResult OtherAction()
{
return View("Index");
}
次のように Area/Controller/OtherAction への単純なリダイレクトを行うと、これはうまく機能します。
return RedirectToAction("OtherAction", "Controller", new { area = "Area" });
しかし、次のようなリダイレクトを行う必要があります (ここで理由を確認してください)。
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 メソッドが実行され、このコードの最後の行で次の例外がスローされます。
ビュー「インデックス」またはそのマスターが見つからないか、検索された場所をサポートするビュー エンジンがありません。次の場所が検索されました。
~/Views/Controller/Index.aspx
〜/Views/Controller/Index.ascx
~/Views/Shared/Index.aspx
~/ビュー/共有/Index.ascx
〜/Views/Controller/Index.cshtml
〜/Views/Controller/Index.vbhtml
~/ビュー/共有/Index.cshtml
〜/ビュー/共有/Index.vbhtml
なぜこれが起こっているのですか、どうすれば修正できますか?