MVC エリアを使用しているプロジェクトがあります。エリアにはプロジェクト全体が含まれていますが、エリアの外側のメインの「Views/Controllers/Models」フォルダーは空で、デフォルトの受信リクエストを自分のエリアのホームコントローラーにルーティングするように設定したディスパッチコントローラーがありません。
このコントローラーには、次のような 1 つのメソッドがあります。
public ActionResult Index(string id)
{
return RedirectToAction("Index", "Home", new {area = "xyz"});
}
次のように、このコントローラーを使用するためのデフォルトルート設定もあります:-
routes.MapRoute(
"Default", // Default route
"{controller}/{action}/{id}",
new { controller = "Dispatch", action = "Index", id = UrlParameter.Optional }
);
私のサイトへのデフォルトのリクエストは、関連するエリアに適切にルーティングされます。Area の "RegisterArea" メソッドには単一のルートがあります:-
context.MapRoute(
"xyz_default",
"xyz/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
私のエリアには、多くのビューを持つ複数のコントローラーがあります。"return View("blah"); のようなこれらのコントローラー メソッドで特定のビューを呼び出すと、正しいビューがレンダリングされます。ただし、パラメーターとして渡されたモデル オブジェクトと共にビューを返そうとすると、次のエラーが発生します。
Server Error in '/DeveloperPortal' Application.
The view 'blah' or its master was not found. The following locations were searched:
~/Views/Profile/blah.aspx
~/Views/Profile/blah.ascx
~/Views/Shared/blah.aspx
~/Views/Shared/blah.ascx
モデルオブジェクトがパラメータとして渡されるときのように見えます。「View()」メソッド [eg return View("blah",obj) ] に対して、領域固有のビュー フォルダーではなく、プロジェクトのルートでビューを検索します。
ここで何が欠けていますか?
前もって感謝します。