ベースURLをオンラインストアの特定のカテゴリに移動させたいのですが(違いがある場合は NopCommerce オンラインストア)。カテゴリーのURL:http://myUrl.com/c/6
Scott Gutherieの投稿を含むいくつかの投稿を読んだ後 MVCルーティングについて 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" }
);
}
しかし、これはうまくいかないようでした。私がやろうとしていることをどのように達成できますか?
私はMVCの経験がほとんどないので、これのいずれかが意味をなさない場合は謝罪します。
最も興味深い部分がnopcommerceソースコードにあるようです。デフォルトルートは次のように登録されます
routes.MapLocalizedRoute("HomePage",
"",
new { controller = "Home", action = "Index"},
new[] { "Nop.Web.Controllers" });
基本的に、デフォルトのルートを登録してから、//register custom routes
コメント。最終的には次のようになります。
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);
}
最初のルートは必要ない場合もあります。よく分かりません。 nopcommerceで動作することはありません。
NopCommerceの更新との将来の競合を避けるために、次のようにテーマフォルダー内に新しいRouteProvider.csを作成します。
~/Themes/MyTheme/Infrastructure/RouteProvider.cs
次に、このコードを内部に配置します。
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;
}
}
}
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
);
}
/ Catalog/Category/6からデフォルトページを設定する必要があります
この行を書く理由がわかりませんnew[] { "Nop.Web.Controllers" }
やってみました:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"Default", // Route name
"Catalog/Category/6"
);
}