106 votes

Définir la "page d'accueil" dans Asp.Net MVC

Dans asp.net MVC, la "page d'accueil" (c'est-à-dire la route qui s'affiche lorsque l'on clique sur www.foo.com) est définie sur Home/Index .

  • Où cette valeur est-elle stockée ?
  • Comment puis-je changer la "page d'accueil" ?
  • Y a-t-il quelque chose de plus élégant que d'utiliser RedirectToRoute() dans l'action Index du contrôleur d'accueil ?

J'ai essayé de rechercher Home/Index dans mon projet et je n'ai pas trouvé de référence, et je n'ai rien pu voir dans IIS (6). J'ai regardé la page default.aspx dans la racine, mais cela ne semble pas faire quelque chose de pertinent.

Merci

155voto

Michael Stum Points 72046

Regardez les fichiers Default.aspx/Default.aspx.cs et Global.asax.cs.

Vous pouvez configurer une route par défaut :

        routes.MapRoute(
            "Default", // Route name
            "",        // URL with parameters
            new { controller = "Home", action = "Index"}  // Parameter defaults
        );

Il suffit de modifier les noms des contrôleurs et des actions en fonction des valeurs par défaut souhaitées. Cela devrait être la dernière route dans la table de routage.

6 votes

@NikolaiDante vous devriez faire de ce commentaire une réponse car j'ai failli le manquer et c'est plus rapide que cette réponse :) Merci

3 votes

Dans MVC 5, si vous avez un formulaire de connexion, lorsque vous cliquez sur la connexion sur la page d'accueil, il sera toujours redirigé vers le contrôleur Home, et non vers le contrôleur personnalisé spécifié dans la route. Donc, en dehors de la modification de la configuration de la route, il faut également modifier le code qui appelle RedirectionToAction("Index", "Home") et le remplacer par vos propres noms de contrôleur et d'action.

0 votes

Il est important de souligner que vous pouvez avoir Routes multiples . Cela pourrait être votre route par défaut avec des paramètres d'URL BLANCS, mais vous voudrez probablement une deuxième route du type url: "{controller}/{action}/{id}" . Il suffit de donner des noms différents aux routes.

25voto

woogy Points 95

Modifiez App_Start/RouteConfig.cs comme indiqué ci-dessous. Ainsi, l'utilisateur sera dirigé vers le contrôleur et l'action définis dans la nouvelle déclaration MapRoute s'il navigue vers l'URL de votre site sans paramètres URL, c'est-à-dire que www.yoursite.com dirigera l'utilisateur vers www.yoursite.com/foo/youraction :

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            //**This is the "Default" route created by Visual Studio when you create an MVC project
            //routes.MapRoute(
            //    name: "Default",
            //    url: "{controller}/{action}/{id}",
            //    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

            //** Here I have created a custom "Default" route that will route users to the "YourAction" method within the "YourNewController" controller.
                routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "FooController", action = "YourAction", id = UrlParameter.Optional }
            );
        }

5voto

Ankur Shah Points 377

Étape 1 : Cliquez sur le fichier Global.asax dans votre solution.

Étape 2 : Allez ensuite à la définition de

RouteConfig.RegisterRoutes(RouteTable.Routes);

Étape 3 : Modifier le nom du contrôleur et le nom de la vue

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

4voto

Niraj Points 41
public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",               
            defaults: new { controller = "Your Controller", action = "Your Action", id = UrlParameter.Optional }
        );
    }
}

3voto

Michał Chaniewski Points 2125

vérifiez la méthode RegisterRoutes dans global.asax.cs - c'est l'endroit par défaut pour la configuration des routes...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X