我正在为本地一所大学使用 MVC3 和 C# 创建一个项目。要求是在浏览器中输入类似 www.mysite.com/teachercode 的内容时显示教师资料。
我在我的教师 Controller 类中创建了一个方法 ShowTeacher。我的计划是在申请开始时查找数据库,并为每位教师注册如下所示的相同路线,这将进一步处理请求,这种方法是否正确?
foreach(Teacher tch in TeacherCollection)
routes.MapRoute(
"Teacher route" + tch.Id,
tch.TeacherCode,
new { controller = "Teacher", action = "ShowTeacher" }
);
其次,如果在数据库中添加了一个新的老师,是否可以在保存老师后立即添加路线?
提前致谢
最佳答案
您不需要在运行时添加路由,而是可以设置一个路由来捕获 www.mysite.com/teachercode 形式的 URL,只要您的teachercodes 与您的任何 Controller 同名。
在 RegisterRoutes
中,添加另一个路由(需要是第一个),它将查询路由到 ShowTeacher
的操作方法你的 TeacherController
,以及一个 route constraint .
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 个字符之间。您可以根据自己的需要进行调整。
关于c# - 是否可以在运行时在 MVC3 中添加路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10784100/