2010-12-13 53 views
4

La méthode recommandée pour créer une page d'édition pour ASP.NET MVC consiste à utiliser deux méthodes sur un contrôleur appelé Edition: une action GET et une action POST, les deux partageant le même nom mais surchargé différemment. Les erreurs de validation sont affichées dans l'action POST si l'édition échoue. Ensuite, l'utilisateur peut partager ou mettre en signet l'URL même s'il est hors POST: l'URL va à la version GET sur le retour.Conflits Async GET/POST et nom d'action dans ASP.NET MVC

Jusqu'ici, tout va bien. Mais alors il y a le ASP.NET async pattern on controllers. Vous avez EditAsync et EditCompleted. Sur les deux différentes méthodes EditCompleted, comment dites-vous le GET en dehors du POST? Si vous renommez l'action POST, vous perdez le bon comportement discuté plus tôt.

Existe-t-il un bon moyen de faire fonctionner ces deux modèles ensemble?

Répondre

6

Généralement, la méthode XyzAsync() fournit à la méthode XyzCompleted() un objet d'état qui lui indique quelle unité de travail est exécutée, ainsi la méthode XyzCompleted() peut inspecter cet objet et faire ce qu'il faut. Cependant, si vous voulez avoir une méthode Completed Complétée pour chaque verbe, ceci est possible via ce qui suit:

[ActionName("Edit"), HttpGet] 
public void EditGetAsync() { } 

public ActionResult EditGetCompleted() { } 

[ActionName("Edit"), HttpPost] 
public void EditPostAsync() { } 

public ActionResult EditPostCompleted() { }