ASP.NET MVC中的异步GET/POST和操作名称冲突

Ran*_*ngy 4 c# asp.net-mvc asynchronous

为ASP.NET MVC创建编辑页面的推荐方法是在名为Edit的控制器上有两个方法:一个GET操作和一个POST操作,两者共享相同的名称但重载不同.如果编辑失败,则在POST操作上显示验证错误.然后,即使用户不在POST,用户也可以共享或添加URL:URL返回时返回GET版本.

到现在为止还挺好.但是在控制器上ASP.NET异步模式.您有EditAsync和EditCompleted.在两个不同的EditCompleted方法中,您如何告诉GET除了POST?如果重命名POST操作,则会丢失前面讨论的好行为.

有没有一种很好的方法让这两种模式一起工作?

Lev*_*evi 6

通常,XyzAsync()方法为XyzCompleted()方法提供一些状态对象,告诉它正在执行哪个工作单元,因此XyzCompleted()方法可以检查此对象并执行正确的操作.但是,如果要为每个动词使用不同的Completed方法,可以通过以下方法实现:

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

public ActionResult EditGetCompleted() { }

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

public ActionResult EditPostCompleted() { }
Run Code Online (Sandbox Code Playgroud)