2009-07-17 75 views
89

En asp.net MVC, la "página de inicio" (es decir, la ruta que se muestra al acceder a www.foo.com) está configurada en Inicio/Índice.Establecer "Página de inicio" en Asp.Net MVC

  • ¿Dónde se almacena este valor?
  • ¿Cómo puedo cambiar la "página de inicio"?
  • ¿Hay algo más elegante que usar RedirectToRoute() en la acción de índice del controlador doméstico?

Intenté grepping para Inicio/Índice en mi proyecto y no pude encontrar una referencia, ni pude ver nada en IIS (6). Miré la página default.aspx en la raíz, pero eso no pareció hacer nada relevante.

Gracias

Respuesta

133

Mira el Default.aspx/Default.aspx.cs y la Global.asax.cs

Puede configurar una ruta por defecto:

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

acaba de cambiar los nombres de controlador/acción a su valor predeterminado deseado. Esa debería ser la última ruta en la tabla de enrutamiento.

+90

En MVC 4, esto se puede hacer en App_Start/RouteConfig.cs – NikolaiDante

+6

@NikolaiDante debe hacer ese comentario como una respuesta casi me lo perdí y es más rápido que esta respuesta. :) Gracias – GazB

+3

En MVC 5. si tiene un inicio de sesión de formulario, al hacer clic en Iniciar sesión en la página de inicio, seguirá redirigiendo a Controlador doméstico, no a su controlador personalizado especificado en la ruta. la acción de registro hará algo similar. Por lo tanto, además de cambiar la configuración de ruta, también debe cambiar algún código que llame a RedirectionToAction ("Índice", "Inicio") y reemplazarlo con su propio controlador y nombre de acción. – anIBMer

3

cheque método RegisterRoutes en global.asax.cs - es el lugar predeterminado para la configuración de la ruta ...

14

ASP.NET Core

enrutamiento está configurado en el método de la clase StartupConfigure. Para configurar la "página de inicio" simplemente agregue lo siguiente. Esto provocará que los usuarios se dirijan al controlador y a la acción definida en el método MapRoute cuando/si navegan a la URL base de su sitio, es decir, yoursite.com encaminará a los usuarios a yoursite.com/foo/index:

app.UseMvc(routes => 
{ 
    routes.MapRoute(
    name: "default", 
    template: "{controller=FooController}/{action=Index}/{id?}"); 
}); 

Pre-ASP.NET Core

Utilice el método RegisterRoutes situado en cualquiera de App_Start/RouteConfig.cs (MVC 3 y 4) o Global.asax.cs (MVC 1 y 2) como se muestra a continuación. Esto hará que los usuarios sean encaminados al controlador y acción definida en el método MapRoute si navegan a base URL de su sitio, es decir, se yoursite.com ruta al usuario yoursite.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 } 
    ); 
} 
3
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 } 
     ); 
    } 
} 
2

Intenté la respuesta pero no funcionó para mí. Esto es lo que terminé haciendo:

Crear un nuevo controlador DefaultController. En la acción de índice, i, escribió un redireccionamiento línea:

return Redirect("~/Default.aspx") 

En RouteConfig.cs, Cambio de controlador = "default" para la ruta.

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

Esto creará una redirección y los motores de búsqueda no les gusta eso ... – oneNiceFriend

3

Paso 1: Haga clic en el archivo Global.asax en su solución.

Paso 2: A continuación, Ir a definición de

RouteConfig.RegisterRoutes(RouteTable.Routes);

Paso 3: Cambiar nombre del controlador y Nombre de vista

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 } 
         ); 
    } 
} 
2

atributo de direccionamiento en MVC 5

Antes de MVC 5 puede asignar direcciones URL a acciones y controladores específicos llamando al routes.MapRoute(...) en el archivo RouteConfig.cs Aquí es donde se almacena la URL de la página de inicio (Home/Index). Sin embargo si modifica la ruta por defecto, como se muestra a continuación,

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

tener en cuenta que esto afectará a las URL de las demás acciones y controladores. Por ejemplo, si usted tenía una clase controlador llamado ExampleController y un método de acción dentro de ella llama DoSomething, entonces la espera URL predeterminada ExampleController/DoSomething ya no funcionará porque la ruta por defecto se ha cambiado.

Una solución para esto es que se metan con la ruta por defecto y crear nuevas rutas en el archivo RouteConfig.cs para otras acciones y controladores como tal,

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 } 
); 

Ahora la acción de la clase DoSomethingExampleController se se asignará a la url hey/now. Pero esto puede ser tedioso de hacer cada vez que quiera definir rutas para diferentes acciones. Así que en MVC 5 ahora puede agregar atributos para que coincida con las direcciones URL a acciones como así,

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(); 
    } 
} 
Cuestiones relacionadas