2012-05-28 31 views
5


Tôi đang tạo một dự án trong MVC3 cùng với C# cho một trường cao đẳng địa phương. Yêu cầu là để hiển thị hồ sơ giáo viên khi một cái gì đó như www.mysite.com/teachercode được nhập vào trình duyệt.Có thể thêm tuyến đường khi chạy trong MVC3 không?

Tôi đã thực hiện phương pháp ShowTeacher trong lớp trình điều khiển Giáo viên của mình. Kế hoạch của tôi là tra cứu cơ sở dữ liệu khi bắt đầu ứng dụng và cho mỗi giáo viên đăng ký cùng một tuyến đường như được hiển thị bên dưới, điều này sẽ xử lý yêu cầu thêm, phương pháp này có đúng không?

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

Thứ hai nếu giáo viên mới được thêm vào cơ sở dữ liệu, bạn có thể thêm tuyến đường ngay khi giáo viên được lưu không?

Cảm ơn trước

Trả lời

5

Bạn không cần phải thêm một tuyến đường trong thời gian chạy, thay vào đó bạn có thể thiết lập một lộ trình mà sẽ bắt các URL có dạng www.mysite.com/teachercode, chừng nào không có tài liệu nào trong số hướng dẫn có cùng tên với bất kỳ bộ điều khiển nào của bạn.

Trong RegisterRoutes, thêm một tuyến đường (mà cần phải được đầu tiên các ), mà sẽ truy vấn đường đến phương pháp hành động của ShowTeacherTeacherController của bạn, cùng với một route constraint.

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

Ràng buộc trong ví dụ này - @"[A-Za-z]{1,10}" - được speciying rằng teachercode sẽ chỉ chứa chữ hoa hay chữ thường, và có chiều dài từ 1 đến 10 ký tự. Bạn có thể điều chỉnh điều này theo nhu cầu của bạn.

+0

Điều gì sẽ xảy ra, nếu người dùng truy cập www.mysite.com trong trình duyệt, trong trường hợp đó người dùng sẽ được đưa đến tuyến đường của giáo viên, phải không? Nhưng tôi muốn người dùng để đi ở nhà điều khiển trong trường hợp này. Ngoài ra tôi cũng muốn biết điều này cho kiến ​​thức của mình. –

+1

@ImranBalouch Nếu người dùng nhập _www.mysite.com_ thì tuyến đường này sẽ không được sử dụng vì nó sử dụng hạn chế tuyến đường yêu cầu ít nhất một ký tự trong đường dẫn của URL. –

+0

wow, người đàn ông tuyệt vời! Hôm qua điều này đã mất một thời gian đủ tốt của tôi, tôi đã sử dụng cách tiếp cận tương tự nhưng với những hạn chế, lolz Cảm ơn câu trả lời của bạn tôi, tôi đã trả lời cho câu hỏi của tôi, nhưng đối với kiến ​​thức của tôi, bạn có thể vui lòng cho tôi biết nếu có thể thế nào để thêm tuyến đường vào thời gian chạy? –

Các vấn đề liên quan