1

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が見つかりません。正確にエリア名(管理者)のリクエストのみが許可されます。

助けてくれてありがとう!

4

3 に答える 3

2

URL を使用すると/Home/Index、領域を通過しません。エリアはAdministratorプレフィックスを使用してルーティングで定義されます。URL にこのプレフィックスが存在することで、ルーティング エンジンはユーザーがエリア内にいることを認識できます。

デフォルト領域を設定するには、いくつかの回避策があります。

于 2012-06-10T17:23:24.930 に答える
1

ルートを追加していただきありがとうございます。URLにエリアが指定されていないときに管理エリアを使用する場合は、Global.asaxのルートを次のように置き換えてみてください。

routes.MapRoute( "Default", "{controller}/{action}/{id}", new { area = "Administrator", controller = "Home", action = "Index", id = UrlParameter.Optional }, new[] { "SampleWebsite.Areas.Administrator.Controllers" } );
于 2012-06-11T14:57:44.957 に答える
1

領域内に開始ページが必要な場合は、デフォルト領域の HomeController ( /Controllers/HomeController.cs)でこれを考慮してください。

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return RedirectToAction("Index", "Home",
            new { area = "Administrator" });
    }
}
于 2012-06-10T17:31:02.373 に答える