Dans asp.net MVC, la "page d'accueil" (c'est-à-dire l'itinéraire qui s'affiche lorsque vous accédez à www.foo.com) est définie sur Accueil/Index.
J'ai essayé grepping pour Home/Index dans mon projet et je ne pouvais trouver aucune référence. Je ne pouvais rien voir dans IIS (6). J'ai consulté la page default.aspx à la racine, mais cela ne semble rien faire de pertinent.
Merci
Regarde le Default.aspx/Default.aspx.cs
et le fichier Global.asax.cs
Vous pouvez configurer un itinéraire par défaut:
routes.MapRoute(
"Default", // Route name
"", // URL with parameters
new { controller = "Home", action = "Index"} // Parameter defaults
);
Il suffit de changer les noms de contrôleur/action sur la valeur par défaut souhaitée. Cela devrait être le dernier itinéraire de la table de routage.
Le routage est configuré dans la méthode Configure
de la classe Startup
. Pour définir la "page d'accueil", ajoutez simplement ce qui suit. Ainsi, les utilisateurs seront routés vers le contrôleur et l'action définie dans la méthode MapRoute lorsqu'ils/accéderont à l'URL de base de votre site, c'est-à-dire que votre site.com dirigera les utilisateurs vers votre site.com/foo/index:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=FooController}/{action=Index}/{id?}");
});
Utilisez la méthode RegisterRoutes située dans App_Start/RouteConfig.cs (MVC 3 et 4) ou Global.asax.cs (MVC 1 et 2), comme indiqué ci-dessous. Ainsi, les utilisateurs seront routés vers le contrôleur et l’action définie dans la méthode MapRoute s’ils accèdent à l’URL de base de votre site. En d’autres termes, votre site.com le dirigera vers votre site.com/foo/index:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// Here I have created a custom "Default" route that will route users to the "YourAction" method within the "FooController" controller.
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "FooController", action = "Index", id = UrlParameter.Optional }
);
}
Étape 1: Cliquez sur Global.asax File dans votre solution.
Étape 2: Ensuite, passez à 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 }
);
}
}
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 }
);
}
}
vérifiez la méthode RegisterRoutes dans global.asax.cs - il s'agit de l'emplacement par défaut pour la configuration de l'itinéraire ...
Avant MVC 5, vous pouviez mapper des URL sur des actions et des contrôleurs spécifiques en appelant routes.MapRoute(...)
dans le fichier RouteConfig.cs. C’est ici que l’URL de la page d’accueil est stocké (Home/Index
). Cependant, si vous modifiez la route par défaut comme indiqué ci-dessous,
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
gardez à l'esprit que cela affectera les URL d'autres actions et contrôleurs. Par exemple, si vous avez une classe de contrôleur nommée ExampleController
et une méthode d'action à l'intérieur de celle-ci appelée DoSomething
, l'URL par défaut attendue ExampleController/DoSomething
ne fonctionnera plus car la route par défaut a été modifiée.
Une solution de contournement consiste à ne pas manipuler la route par défaut et à créer de nouvelles routes dans le fichier RouteConfig.cs pour d’autres actions et contrôleurs, par exemple,
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Example",
url: "hey/now",
defaults: new { controller = "Example", action = "DoSomething", id = UrlParameter.Optional }
);
Maintenant, l'action DoSomething
de la classe ExampleController
sera mappée à l'URL hey/now
. Mais cela peut devenir fastidieux à chaque fois que vous souhaitez définir des itinéraires pour différentes actions. Donc, dans MVC 5, vous pouvez maintenant ajouter des attributs pour faire correspondre les URL à des actions comme celle-ci,
public class HomeController : Controller
{
// url is now 'index/' instead of 'home/index'
[Route("index")]
public ActionResult Index()
{
return View();
}
// url is now 'create/new' instead of 'home/create'
[Route("create/new")]
public ActionResult Create()
{
return View();
}
}
J'ai essayé la réponse mais cela n'a pas fonctionné pour moi. C'est ce que j'ai fini par faire:
Créez un nouveau contrôleur DefaultController. En action index, j'ai écrit une redirection de ligne:
return Redirect("~/Default.aspx")
Dans RouteConfig.cs, changez le contrôleur = "Par défaut" pour la route.
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Default", action = "Index", id = UrlParameter.Optional }
);
Si vous ne voulez pas changer de routeur, allez simplement dans le HomeController et changez MyNewViewHere dans l'index comme ceci:
public ActionResult Index()
{
return View("MyNewViewHere");
}