asp.net MVC 4およびMVC 5でデフォルトコントローラーを設定する方法


106

ASP.NET MVC 4プロジェクトのデフォルトコントローラーをHomeControllerにせずに設定するにはどうすればよいですか?

アプリケーションの起動時にデフォルトのエリアをどのように設定すればよいですか?


ルートページとして「/」から「/ home」に変更する場合、この「/ home」は顧客のブラウザで表示できる必要があります
Andre Mesquita

回答:


165

最善の方法は、ルートを変更することです。デフォルトのルート(App_Startで定義)が設定します/Home/Index

routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters*
        new { controller = "Home", action = "Index", 
        id = UrlParameter.Optional }
);

デフォルトのランディングページとして。これを任意のルートに変更できます。

routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters*
        new { controller = "Sales", action = "ProjectionReport", 
        id = UrlParameter.Optional }
);

13
MVC 4では、デフォルトルートはApp_Start / RouteConfig.csに設定されています
Eric Labashosky 2013年

とても本当です。私は現在、両方のプロジェクトに取り組んでおり、これらのことを見過ごしています;)
デイブ・

1
Daveは正しいですが、MVC 4ではルーティングがGlobal.asaxではなく、App_Startの下のRouteConfig.csで行われることを追加したいと思います。
良いサマリア人2013年

2
デフォルトルートで参照されているコントローラーが別のエリア(つまり、ルートではないエリア)にある場合に、それを機能させるにはどうすればよいですか?
superjos 2013

デフォルトのルートを次のように設定できるはずです"AreaName/{controller}/{action}/{id}"
Dave Alperovich 2013

30

内のコード下のセットRouteConfig.csApp_Startフォルダ

public static void RegisterRoutes(RouteCollection routes)
{
 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
 routes.MapRoute(
 name: "Default",
 url: "{controller}/{action}/{id}",
 defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional });
}

それでも機能しない場合は、以下の手順を実行してください

二番目の方法: 以下の手順に従ってください。

1)プロジェクトを右クリック

2)プロパティを選択します

3)Webオプションを選択してから、特定のページ(コントローラー/ビュー)を選択し、ログインページを設定します。

ここで、アカウントは私のコントローラーであり、ログインは私のアクションメソッドです(アカウントコントローラーに保存されています)

添付のここに画像の説明を入力してくださいスクリーンショットをご覧ください。


15
「第2の方法」は、Webプロジェクトをデバッグするときに何が起こるかについてです。「デフォルトのコントローラ」とは関係ありません。つまり、サイトのランディングページに移動したときに表示されるページです。
Martin Liversage 2014

25

私はこの質問が答えられるのを見ませんでした:

アプリケーションの起動時にデフォルトのエリアをどのように設定すればよいですか?

したがって、デフォルトのエリアを設定する方法は次のとおりです。

var route = routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    ).DataTokens = new RouteValueDictionary(new { area = "MyArea" });

1
すばらしい質問です。1つにまとめてみませんか。
stuartdotnet 2014

「エリア」とは何ですか?ビューを定義すると、参照されたレイアウトが読み込まれ、ビューデータを含む別のHTTPリクエストが読み込まれますか?(つまり、個別のAjax操作)またはレイアウトがレンダリングされ、ビューの周囲にラップされますか?
Gus Crawford

2
@GusCrawford「エリア」とは何ですか?msdn.microsoft.com/en-us/library/ee671793(VS.100).aspxから:ASP.NET MVCを使用すると、大規模なプロジェクトに対応するために、Webアプリケーションを領域と呼ばれる小さな単位に分割できます。エリアは、大きなMVC Webアプリケーションを小さな機能グループに分離する方法を提供します。エリアは事実上、アプリケーション内のMVC構造です。アプリケーションには、複数のMVC構造(領域)を含めることができます。
Amna Ali 2014

他の質問については、この回答とは関係ないと思いますし、元の質問にも関係がないようです。たぶん、あなたはそれをどこかに投稿するべきです。
Amna Ali 2014

パースペクティブのおかげで、新しいスレッドの返信で個別にお願いします。
Gus Crawford

2

コントローラーが1つしかなく、ルートのすべてのアクションにアクセスする場合は、次のようなコントローラー名をスキップできます。

routes.MapRoute(
        "Default", 
        "{action}/{id}", 
        new { controller = "Home", action = "Index", 
        id = UrlParameter.Optional }
);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.