J'aimerais que mon URL de base soit dirigée vers une catégorie spécifique d'un magasin en ligne (un NopCommerce magasin en ligne si cela fait une différence). L'URL de la catégorie est: http://myUrl.com/c/6
Après avoir lu quelques articles, dont celui de Scott Gutherie sur le routage MVC , je pensais pouvoir ajouter le code suivant à mon fichier 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" }
);
}
Mais cela n'a pas semblé fonctionner. Comment puis-je accomplir ce que j'essaie de faire?
J'ai peu d'expérience avec MVC, donc je m'excuse si cela n'a aucun sens.
semble que les bits les plus intéressants se trouvent dans le code source de nopcommerce. la route par défaut est enregistrée comme
routes.MapLocalizedRoute("HomePage",
"",
new { controller = "Home", action = "Index"},
new[] { "Nop.Web.Controllers" });
vous voudrez en principe enregistrer votre itinéraire par défaut en premier, avant le commentaire //register custom routes
. devrait ressembler à ceci:
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);
}
le premier itinéraire peut même ne pas être nécessaire. je ne suis pas sûr. jamais travaillé avec nopcommerce.
Afin d'éviter tout conflit futur avec les mises à jour dans NopCommerce, je voudrais créer un nouveau fichier RouteProvider.cs dans mon dossier de thèmes, comme suit:
~/Themes/MyTheme/Infrastructure/RouteProvider.cs
Ensuite, mettez ce code à l'intérieur:
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;
}
}
}
Essayez d'écrire ceci dans RegisterRoutes method
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
);
}
il faut définir votre page par défaut à partir de/Catalogue/Catégorie/6
Je ne comprends pas pourquoi vous écrivez cette ligne new[] { "Nop.Web.Controllers" }
as-tu essayé:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"Default", // Route name
"Catalog/Category/6"
);
}