2009-01-19 15 views
7

Tôi có một số hành động POST trên bộ điều khiển của tôi được nhấn từ một cặp hành động GET. Khi xác thực không thành công, tôi muốn hiển thị chế độ xem của hành động mà POST đến từ đó. Ví dụ:ASPNET MVC: Cách để tìm ra con đường của người giới thiệu (sic)?

~/chiếm POSTS tới ~/tài khoản/tắt - render "chỉ số" trên xác nhận lỗi ~/tài khoản/Bài Viết tới ~/tài khoản/tắt - làm cho "Hồ sơ" trên xác nhận lỗi

Tôi có thể lấy referer (sic) ra khỏi server-variables và phân tích nó để tìm ra hành động, nhưng hy vọng sẽ có thứ gì đó được xây dựng trong đó, điều tôi muốn, hoặc ai đó đã làm điều này mà tôi có thể giường cũi từ.

Dường như thuộc tính ControllerContext.RouteData chỉ có thông tin về yêu cầu hiện tại, không phải yêu cầu tham chiếu (sic) ...?

Tôi đang sử dụng bản beta ASP.NET MVC.

+0

Tôi cũng muốn biết liệu có cách nào để có được Tuyến đường không có bối cảnh HTTP hay không. –

Trả lời

2

MVC Contrib bao gồm một phương pháp mở rộng trên Chuỗi để nhận tuyến đường (cụ thể là in here). Về lý thuyết này sẽ cho phép bạn làm

RouteData referrer = Request.UrlReferrer.PathAndQuery.Route(); 

hoặc, tất nhiên, quấn rằng trong một phương pháp mở rộng trên HttpRequest vì vậy bạn chỉ có thể làm

RouteData referrer = Request.ReferrerRoute(); 

Tuy nhiên, nó dành cho kiểm tra đơn vị và sử dụng Rhino Mocks để tạo HttpContextBase mà GetRouteData() yêu cầu. Tin tốt là có vẻ như đã bỏ đi rất ít, vì vậy bạn có thể tránh được Rhino Mocks nếu bạn tạo lớp FakeHttpContext của riêng bạn bắt nguồn từ HttpContextBase.