18

ベースURLをオンラインストアの特定のカテゴリ(違いが生じる場合はNopCommerceオンラインストア)に移動させたいです。カテゴリのURLは次のとおりです。 http://myUrl.com/c/6

MVCルーティングに関するScottGutherieの投稿を含むいくつかの投稿を読んだ後、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の経験がほとんどないので、これが意味をなさない場合はお詫び申し上げます。

4

4 に答える 4

14

最も興味深い部分は 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 を使用したことはありません。

于 2011-12-12T06:10:07.897 に答える
1

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;
        }
    }
}
于 2012-10-03T10:23:07.900 に答える
1

これを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" }

于 2011-12-12T06:08:56.363 に答える
0

やってみました:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapRoute(
            "Default", // Route name
            "Catalog/Category/6"
    );
}
于 2011-12-12T06:08:28.493 に答える