2010-12-13 4 views
4

Рекомендуемый способ создания страницы редактирования для ASP.NET MVC состоит в том, чтобы иметь два метода на контроллере Edit: одно действие GET и одно действие POST, одно и то же имя, но перегруженное по-разному. Ошибки проверки отображаются в действии POST, если редактирование завершается с ошибкой. Затем пользователь может поделиться или пометить URL-адрес, даже если он отключен от POST: URL-адрес переходит к версии GET при возврате.Async GET/POST и конфликты имени действия в ASP.NET MVC

До сих пор так хорошо. Но тогда есть ASP.NET async pattern on controllers. У вас есть EditAsync и EditCompleted. На двух разных методах EditCompleted, как вы указываете GET отдельно от POST? Если вы переименуете действие POST, вы потеряете хорошее поведение, о котором говорилось ранее.

Есть ли хороший способ заставить эти два шаблона работать вместе?

ответ

6

Обычно метод XyzAsync() предоставляет XyzCompleted() метод некоторого объекта состояния, который сообщает ему, какая единица работы выполняется, поэтому метод XyzCompleted() может проверять этот объект и делать правильные вещи. Однако, если вы хотите иметь различный метод Завершено для каждого глагола, это возможно через:

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

public ActionResult EditGetCompleted() { } 

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

public ActionResult EditPostCompleted() { } 
Смежные вопросы