asp.net - net - web forms c# tutorial
¿Cómo configurar una página predeterminada en una aplicación MVC? (4)
Me gustaría que mi URL base vaya a una categoría específica de una tienda en línea (una tienda en línea de NopCommerce si eso marca una diferencia). La URL de la categoría es: http://myUrl.com/c/6
Después de leer algunas publicaciones, incluida la publicación de Scott Gutherie sobre el enrutamiento de MVC , pensé que solo podía agregar el siguiente código a mi archivo Global.ascx.cs:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//register custom routes (plugins, etc)
var routePublisher = EngineContext.Current.Resolve<IRoutePublisher>();
routePublisher.RegisterRoutes(routes);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Catalog", action = "Category", id = 6 },
new[] { "Nop.Web.Controllers" }
);
}
Pero esto no parece funcionar. ¿Cómo puedo lograr lo que estoy tratando de hacer?
Tengo poca experiencia con MVC, así que me disculpo si algo de esto no tiene sentido.
Intenta simplemente escribir esto en el método RegisterRoutes
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Catalog", action = "Category", id = 6 } // Parameter defaults
);
}
debe establecer su página predeterminada desde / Catálogo / Categoría / 6
No entiendo por qué escribes esta línea new[] { "Nop.Web.Controllers" }
Para evitar futuros conflictos con las actualizaciones en NopCommerce, lo que haría sería crear un nuevo RouteProvider.cs dentro de mi carpeta de temas como esto:
~/Themes/MyTheme/Infrastructure/RouteProvider.cs
Luego ponga este código dentro:
namespace Nop.Web.Themes.MyTheme.Infrastructure
{
public class RouteProvider : IRouteProvider
{
public void RegisterRoutes(RouteCollection routes)
{
routes.MapLocalizedRoute("CustomHome",
"",
new { controller = "Catalog", action = "Category", Id = 6 },
new[] { "Nop.Web.Controllers" });
}
public int Priority
{
get
{
return 10;
}
}
}
Parece que los bits más interesantes están en el código fuente de nopcommerce. la ruta por defecto se registra como
routes.MapLocalizedRoute("HomePage",
"",
new { controller = "Home", action = "Index"},
new[] { "Nop.Web.Controllers" });
básicamente, primero querrá registrar su ruta predeterminada, antes de //register custom routes
comentario de //register custom routes
. Debería acabar luciendo así:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Catalog", action = "Category", id = 6 },
new[] { "Nop.Web.Controllers" }
);
routes.MapRoute(
"CustomHome", // Route name
"", // URL with parameters
new { controller = "Catalog", action = "Category", id = 6 },
new[] { "Nop.Web.Controllers" }
);
//register custom routes (plugins, etc)
var routePublisher = EngineContext.Current.Resolve<IRoutePublisher>();
routePublisher.RegisterRoutes(routes);
}
La primera ruta puede que ni siquiera sea necesaria. no estoy seguro. Nunca trabajé con el nopcommerce.
has probado:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"Default", // Route name
"Catalog/Category/6"
);
}