2012-05-28 14 views
5


私はMVC3で地元の大学のC#と一緒にプロジェクトを作成しています。ウェブサイトwww.mysite.com/teachercodeのようなものがブラウザに入力されたときに教師のプロフィールを表示するという要件がありました。MVC3で実行時にルートを追加することは可能ですか?

教師用コントローラクラスにShowTeacherメソッドを作成しました。私の計画は、アプリケーションの開始時にデータベースを検索し、すべての先生が次のような同じルートを登録します。これはリクエストをさらに処理しますが、このアプローチは正しいですか?新しい先生がデータベースに追加された場合

foreach(Teacher tch in TeacherCollection) 
routes.MapRoute(
      "Teacher route" + tch.Id, 
      tch.TeacherCode, 
      new { controller = "Teacher", action = "ShowTeacher" } 
     ); 

第二に、それはすぐに教師が保存されているようルートを追加することは可能でしょうか?事前

答えて

5

ありがとうございます限り、代わりにフォームwww.mysite.com/teachercodeのURLをキャッチしますルートを設定することができ、実行時にルートを追加する必要はありませんの教師コードには、あなたのコントローラと同じ名前はありません。 RegisterRoutes

route constraintと一緒にTeacherControllerShowTeacherアクションメソッドにどのうルート照会、(一つであることが必要である)別のルートを追加します。この例では

routes.MapRoute(
    "Teacher route", // route name 
    "{teacherCode}", // url 
    new { controller = "Teacher", action = "ShowTeacher" }, // defaults 
    new { teacherCode = @"[A-Za-z]{1,10}" } // constraints 
    ); 

制約 - @"[A-Za-z]{1,10}"は - teachercodeのみ上部または小文字を含み、1〜10文字の長さであろうことspeciyingれます。これをあなたのニーズに適応させることができます。

+0

ユーザーがブラウザにwww.mysite.comを入力すると、その場合、ユーザーはTeacherルートに移動するでしょうか?しかし、私はこの場合、家のコントローラーに行くことをユーザーに願っています。 また、私はこの知識も知りたいと思っています。 –

+1

@ImranBalouchユーザーが_www.mysite.com_を入力すると、URLのパスに少なくとも1文字必要なルート制約が使用されるため、このルートは使用されません。 –

+0

うわー、素晴らしい男!昨日この事は私の十分な時間を取った、私は同じアプローチを使用していたが、拘束なしで、lolz 私の質問に答えてくれたが、私の知っている答えはありがたい実行時にルートを追加するには? –

関連する問題