2013-11-21 25 views
34

Sự khác nhau giữa OnActionExecuted và OnResultExecuting là gì? Cả hai đều bị sa thải ngay sau khi hành động đã được xử lý hoặc làm điều gì đó xảy ra ở giữa hai phương pháp này. Giống như khởi động của View Engine, ...Sự khác biệt giữa OnActionExecuted và OnResultExecuting

+0

Xem http://stackoverflow.com/questions/10423955/when-exactly-do-onresultexecuted-and-onresultexecuting-fire – Loetn

Trả lời

31

Họ có một ngữ cảnh khác.

OnActionExecutedActionExecutedContext trong đó bạn có thể xem kết quả do tác vụ tạo ra. Bạn cũng có thể xem liệu hành động có gặp ngoại lệ hay không và xem liệu ngoại lệ có được xử lý hay không.

OnResultExecutingResultExecutingContext. Phương thức này được gọi ngay trước khi cá thể ActionResult được gọi. Bạn có thể kiểm tra kết quả của phương thức và có thể hủy bỏ việc thực thi kết quả. Điều này thường sẽ dẫn đến một phản ứng trống với mã trạng thái 200. (bạn không thể làm điều này trong phương thức OnActionExecuted).

8

Từ ActionFilterAttribute.OnResultExecuting Method

gọi là bởi khuôn khổ ASP.NET MVC trước kết quả hành động thực thi.

Từ ActionFilterAttribute.OnActionExecuted Method

gọi là bởi khuôn khổ ASP.NET MVC sau phương pháp hành động thực thi.

+4

Vì vậy việc thực hiện onresultexecuting và onresultexecuted thực sự được gọi trước khi OnActionExecuted? Tôi nghĩ rằng kết quả đã được thực hiện sau khi phương thức hành động –

0

Chúng được gọi với nhau.

Không thể có khởi động, vì ActionResult bạn đang thực hiện có thể không được render một View - ActionResults được tự do làm bất cứ điều gì họ chọn: trở về JSON, trả về một tập tin, vấn đề chuyển hướng vv

+0

Vì vậy, khi một cái gì đó giống như một chuyển hướng đang được trả lại, việc thực hiện onresultexecuting không được gọi? –

+0

Nếu bạn có mã được thiết lập để chạy OnActionExecuted, điều này sẽ chạy sau khi OnActionExecuted và trước khi OnResultExecuting, phải không? Vì vậy, không nhất thiết phải ngay sau khi khác. – Matthew

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