2011-12-12 11 views
16

ベースURLをオンラインストアの特定のカテゴリ(NopCommerceオンラインストアに変更したい場合)に移動したいと考えています。カテゴリのURLは次のとおりです。MVCアプリケーションでデフォルトのページを設定する方法は?

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

しかし、これのdidn:私はちょうど私のGlobal.ascx.csファイルに次のコードを追加できると思っていたhttp://myUrl.com/c/6

スコットGutherieのポストabout MVC routingを含むいくつかの記事を読んだ後うまくいきません。私は何をしようとしていますか?

私はMVCでの経験が少ないので、これが意味をなさない場合はお詫び申し上げます。

+0

そのコードではどうなりますか?現在のルートを見ると、そこに配置されているネーミング構造に従わないため、それよりも多くのルーティングルールが必要です。あなたはレジスタルートセクション全体を投稿することができますか? –

+0

完全なRegisterRoutesメソッドで更新されました。ベースURLに行くと、前と同じページに移動します。 –

答えて

13

は、最も興味深いビットがnopcommerceソースコードにあるように見えます。デフォルトルートは、あなたは基本的に//register custom routesコメントの前に、まず自分のデフォルトルートを登録したいと思う

routes.MapLocalizedRoute("HomePage", 
        "", 
        new { controller = "Home", action = "Index"}, 
        new[] { "Nop.Web.Controllers" }); 

として登録されています。次のようになります。

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での更新では今後の衝突を避けるために

0

あなたが試してみました:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.MapRoute(
      "Default", // Route name 
      "Catalog/Category/6" 
    ); 
} 
0

は自分のデフォルトのページは、私が6

/カタログ/カテゴリ/から設定する必要があり、それがある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 
     ); 

    } 

でこれを書いてみなぜこの行を書くのか分かりませんnew[] { "Nop.Web.Controllers" }

+1

彼は既存のeコマースフレームワークの上に構築しています。彼は単にコードを削除することはできません。舞台裏で多くのルート登録があります。これは基本的に彼のアプリケーションが非常に動作するようになります... –

1

、私は何をするだろうことは、このように私のテーマフォルダ内に新しい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; 
     } 
    } 
} 
関連する問題