5


我正在 MVC3 和 C# 中为当地一所大学创建一个项目。要求是在浏览器中输入诸如 www.mysite.com/teachercode 之类的内容时显示教师资料。

我在我的教师控制器类中创建了一个 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中,添加另一个路由(需要是一个路由),它将查询路由到ShowTeacher您的 action 方法TeacherController,以及路由约束

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}"- 指定教师代码将仅包含大写或小写字母,并且长度在 1 到 10 个字符之间。您可以根据自己的需要进行调整。

于 2012-05-28T11:46:56.227 回答