ASP.NETMVC3Frameworkを使用してWebアプリケーションを作成しました。プロジェクトでは、HomeControllerとIndexアクションを使用してAdministratorという新しい領域を追加します。
それはで動作します
http://localhost:2813/Administrator/Home/Index
しかし、URLでアクセスしようとすると
http://localhost:2813/Home/Index
エラーメッセージが表示されます:
'/'アプリケーションのサーバーエラー。
ビュー'インデックス'またはそのマスターが見つからなかったか、検索された>>>ロケーションをサポートするビューエンジンがありません。次の場所が検索されました:〜/ Views / Home / Index.aspx〜/ Views / Home / Index.ascx〜/ Views / Shared / Index.aspx〜/ Views / Shared / Index.ascx〜/ Views / Home/Index。 cshtml〜/ Views / Home / Index.vbhtml〜/ Views / Shared / Index.cshtml〜/ Views / Shared / Index.vbhtml
説明:現在のWeb>>リクエストの実行中に未処理の例外が発生しました。エラーの詳細と、エラーがコードのどこで発生したかについては、スタックトレースを確認してください。
また、maprouteに名前空間を追加しましたが、それでも機能しません。誰かアイデアがありますか?ありがとう。
質問の更新:
これはGlobal.ascxのMapRouteです
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Default", action = "Index", id = UrlParameter.Optional },
new[] { "SampleWebsite.Controllers" }
);
これはAdministratorAreaRegistration.ascxです
context.MapRoute(
"Administrator",
"Administrator/{controller}/{action}/{id}",
new { area = "Administrator", controller = "Dashboard", action = "Index", id = UrlParameter.Optional },
new[] { "SampleWebsite.Areas.Administrator.Controllers" }
);
MapRouteをGlobalからAdministratorAreaRegistrationに移動すると、編集の問題が解決しました(理解および説明できません)
context.MapRoute(
"Administrator",
"Administrator/{controller}/{action}/{id}",
new { area = "Administrator", controller = "Dashboard", action = "Index", id = UrlParameter.Optional },
new[] { "SampleWebsite.Areas.Administrator.Controllers" }
);
context.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { area = "", controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
namespaces: new[] { "SampleWebsite.Controllers" }
);
これで、へのすべてのリクエストlocalhost/Home/Index
は応答404が見つかりません。正確にエリア名(管理者)のリクエストのみが許可されます。
助けてくれてありがとう!