2013-11-21 8 views
34

Qual è la differenza tra OnActionExecuted e OnResultExecuting? Entrambi vengono licenziati l'uno dopo l'altro una volta che l'azione è stata elaborata o si verifica qualcosa tra questi due metodi. Come l'inizializzazione del motore di vista, ...Differenza tra OnActionExecuted e OnResultExecuting

+0

Vedere http://stackoverflow.com/questions/10423955/when-exact-do-onresulttexecuted-and-onresultexecuting-fire – Loetn

risposta

31

Essi avere un contesto diverso.

OnActionExecuted ha un ActionExecutedContext in cui è possibile visualizzare il risultato prodotto dall'azione. Puoi anche vedere se l'azione ha riscontrato un'eccezione e vedere se l'eccezione è stata gestita.

OnResultExecuting ha un ResultExecutingContext. Questo metodo viene chiamato subito prima che venga invocata l'istanza ActionResult. È possibile esaminare il risultato del metodo ed eventualmente annullare l'esecuzione del risultato. Ciò di solito genera una risposta vuota con il codice di stato 200. (non è possibile farlo nel metodo OnActionExecuted).

0

Si chiamano uno dopo l'altro.

Non ci può essere di inizializzazione, dal momento che l'ActionResult si sta eseguendo potrebbe non essere il rendering di una vista - ActionResults sono liberi di fare ciò che scegliere: ritorno JSON, restituire un file, problema di un redirect, ecc

+0

Quindi, quando viene restituito qualcosa come un reindirizzamento, non viene chiamato il comando onresultexecuting? –

+0

Se il codice è impostato per eseguire OnActionExecuted, questo verrà eseguito dopo OnActionExecuted e prima di OnResultExecuting, giusto? Quindi non necessariamente uno dopo l'altro. – Matthew