5


地元の大学向けに、MVC3 と C# でプロジェクトを作成しています。要件は、www.mysite.com/teachercode のようなものがブラウザーに入力されたときに教師のプロフィールを表示することでした。

Teacher コントローラ クラスに ShowTeacher メソッドを作成しました。私の計画は、アプリケーションの開始時にデータベースを検索し、すべての教師が以下に示すように同じルートを登録することです。これにより、リクエストがさらに処理されます。このアプローチは正しいですか?

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

第二に、新しい教師がデータベースに追加された場合、教師が保存されるとすぐにルートを追加することは可能ですか?

前もって感謝します

4

1 に答える 1

5

実行時にルートを追加する必要はありません。代わりに、フォームwww.mysite.com/teachercodeの URL をキャッチするルートを設定できます .

で、別のルート (最初RegisterRoutesのルートである必要があります) を追加します。このルートは、クエリを のアクション メソッドにルーティングし、ルートの制約を加えます。ShowTeacherTeacherController

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 文字の長さであることを指定しています。これをニーズに合わせて調整できます。

于 2012-05-28T11:46:56.227 に答える