0

私のページが最初にロードされるとき、URLはhttp://localhost:1245/のようになります。しかし、私はこのように見えます:http://localhost:1245/Home/Index/2/2012?Events=Show(/ 2/2012?Events = Showは重要な部分です)。最初から2番目のURLをロードするにはどうすればよいですか?ルーティングデータやクエリ文字データでページを開始するにはどうすればよいですか?

+0

デバッグのためにその方法を開始したいのですか、またはそのURLに移動するためにウェブサイトを訪れる人がいたらいいですか? –

+0

生産用のデバッグはありません。定期的なユーザーにそのURLにアクセスしてもらいたい – dotnetN00b

+0

ああ、あなたが何を求めているのか分かります。私はそれらのURLフォーマットに必ずしもその値ではないURLに行くようにします。カレンダーは今日の月と年のデフォルトになります。 – dotnetN00b

答えて

2

私はそれのようなものに見えるように、デフォルトMVCのルートの前に新しいルートを追加しているだろう。

routes.MapRoute(
    "NewDefault", // Route name 
    "{controller}/{action}/{month}/{year}", // URL with parameters 
    new { controller = "Events", 
     action = "Shows", 
     month = DateTime.Now.Month, 
     year = DateTime.Now.Year } // Parameter defaults 
); 

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", 
     action = "Index", 
     id = UrlParameter.Optional } // Parameter defaults 
); 

デフォルトのURL(ユーザーには表示されません)は/Events/Shows/4/2012(日付が4/19/2012の場合)です。デフォルトのコントローラーはEventsControllerで、デフォルトのアクションはEventsController.Showsになります。

public EventsController 
{ 
    public ActionResult Shows(int month, int year) 
    { 
    someModel model = new someModel(); 
    someModel.month = month; 
    someModel.year = year; 
    this.View(someModel); 
    } 
} 
+0

そうですか。クエストリングの部分はどうですか? – dotnetN00b

+0

クエリ文字列をコントローラ/アクションに変換しました。 –

1

追加:あなたのルーティングに

routes.MapRoute("MyRouteName", 
    "Home/Index/2/2012", new { controller = "Home", action = "Index" }); 

変更にHomeControllerのIndexアクションは、次のシグネチャを持っている:

public ActionResult Index(string Events).... 
+0

とにかく/ 2/2012はハードコーディングできませんが、コントローラで決定できますか? – dotnetN00b

+0

URLが標準のcontroller \ action \ idの規則に従っていない限り、そこにあなたのルートがある場合を除いて、あなたはコントローラにアクセスしません。 Ahhh。 – Maess

関連する問題