2010-10-17 24 views
5

Quando si implementa ASP.NET MVC AsyncController, il metodo xxxCompleted deve essere Pubblico. Mi chiedo se questo significa che il metodo xxxCompleted può essere invocato direttamente, o se questo è protetto internamente usando NonAction o qualcosa di simile?ASP.NET MVC AsyncController xxxCompleted

Grazie.

risposta

2

Internamente (e in modo semplicistico), c'è una matrice di MethodInfo delle azioni sul controller asincrono costruito. Quando viene costruito, i suffissi Async e Completed vengono rimossi dai nomi dei metodi di azione.

Se si tenta una chiamata di un metodo di un'azione come IndexCompleted questo array viene cercato, ma perché non c'è una IndexCompleted nella matrice (perché i suffissi sono stati rimossi) i AsyncControllerActionInvoker rapporti che è stata trovata alcuna azione.

Vale la pena avere un poke intorno al codice sorgente per vedere di persona:

ASP.NET MVC 2 RTM on CodePlex