2010-12-30 27 views
5

Có thể truy cập ViewContext từ thư viện lớp học không? Tôi cần nhận được tên của hành động của View và Controller hiện tại. Tôi đã thêm cả System.Web.dllSystem.Web.Mvc vào dự án thư viện lớp học của mình nhưng vẫn không thể tìm được cách để có được những gì tôi yêu cầu. Mặc dù tôi có thể truy cập ngữ cảnh hiện tại bằng cách sử dụng System.Web.HttpContext.Current.Truy cập ViewContext từ thư viện lớp

+1

Bạn đang tự hỏi làm thế nào để làm điều này từ một bối cảnh tĩnh? Chính xác là bạn đang cố đạt được điều gì? Điều này có vẻ như một thiết kế xấu. – TheCloudlessSky

+0

thực sự tôi đang sử dụng các sự kiện nhibernate để kiểm tra tự động theo dõi và cho chi tiết này bao gồm những người thay đổi những gì và khi tôi cũng cần chi tiết về việc xem hoặc biểu mẫu được tạo hoặc chỉnh sửa. Vì vậy, trong hàng trail kiểm toán sẽ là một cái gì đó như View | Action | UserName | DateChanged. Và có mã nhibernate này được đặt bên trong một dll sepearate – Waqas

Trả lời

9

Bạn có thể truy cập thông tin tuyến đường hiện tại như thế này:

var httpContext = new HttpContextWrapper(HttpContext.Current); 
var routeData = System.Web.Routing.RouteTable.Routes.GetRouteData(httpContext); 

var controllerName = routeData.Values["controller"].ToString(); 
var actionName = routeData.Values["action"].ToString(); 
+2

Đối với bất cứ ai như tôi đến với câu trả lời này, bây giờ bạn có thể truy cập vào routedata trực tiếp từ ngữ cảnh: 'HttpContext.Current.Request.RequestContext.RouteData.Values ​​[" controller "]' có vẻ chính xác hơn là làm theo cách trên – Pete

+0

'HttpContext.Current.Request.RequestContext.RouteData.Values ​​[‌" controller "]' phương pháp tiếp cận không hoạt động trong lớp tĩnh. – Muflix

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