tôi muốn nghe ý kiến của bạn và đề nghị có lẽ tốt hơn cho các tình huống sau:ASP.NET MVC, ActionFilters, các lớp học tĩnh và dữ liệu thông qua xung quanh
Tôi có định nghĩa một ActionFilter tùy chỉnh mà hiện một số công việc và đi ra với một số giá trị. Tôi muốn sử dụng giá trị đó trong các hành động của bộ điều khiển và trong các mô hình.
Bây giờ, tôi có thể sử dụng TempData để chuyển giá trị này từ ActionFilter đến bất kỳ phương thức hành động điều khiển nào, sau đó phân phối giá trị này cho tất cả các mô hình được chuyển đến chế độ xem được trả về.
Tôi chắc chắn rằng nó sẽ làm việc nhưng TempData này sẽ có trong phiên ở đâu và khi không ai thực sự cần nó nữa. Giá trị được cho là được sử dụng độc quyền trong mã trong thời gian của một yêu cầu duy nhất sau khi nó có hiệu lực vô hiệu.
tôi đã đưa ra hai lựa chọn:
Trong ActionFilter, tôi đặt giá trị này trong TempData trong OnActioExecuting() và tôi loại bỏ nó trong OnActionExecuted(). Tôi có hiểu chính xác rằng khi OnActionExecuted được gọi, hành động của bộ điều khiển đã kết thúc, phản hồi đã được tạo ra và nội dung TempData này chưa thực hiện theo cách của nó đến phiên YET không?
Trong bất kỳ lớp tĩnh tùy chỉnh nào của tôi (logic), tôi chỉ xác định thuộc tính công khai cho giá trị này và tôi sử dụng nó bất cứ khi nào cần. Liệu trường tĩnh này không bị mất giữa OnActionExecuting() và thực sự thực thi phương thức điều khiển? Có bất kỳ vấn đề nào khác có thể mất giá trị này trong quá trình xử lý yêu cầu trên máy chủ không?
Có tùy chọn nào khác/tốt hơn tôi chưa được xem xét chưa?
Khá thú vị. Có phải là các tham số của hàm tạo dựng hành động sẽ tự động được ánh xạ tới các khóa tập hợp ActionParameters không? – User
Có các thông số hành động phải là cách ưu tiên để truyền giá trị trong bộ điều khiển. – kazimanzurrashid
Cuối cùng tôi thích cách tiếp cận này, mặc dù nó chắc chắn từ chối nguyên tắc DRY. Cảm ơn vì tiền hỗ trợ. – User