Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC中的异步获取/发布和操作名称冲突_C#_Asp.net Mvc_Asynchronous - Fatal编程技术网

C# ASP.NET MVC中的异步获取/发布和操作名称冲突

C# ASP.NET MVC中的异步获取/发布和操作名称冲突,c#,asp.net-mvc,asynchronous,C#,Asp.net Mvc,Asynchronous,为ASP.NET MVC创建编辑页面的推荐方法是在名为edit的控制器上有两个方法:一个GET操作和一个POST操作,它们共享相同的名称,但重载方式不同。如果编辑失败,验证错误将显示在POST操作上。然后,用户可以共享该URL或将其添加到书签,即使该URL已从帖子中删除:该URL将在返回时转到GET版本 到目前为止,一切顺利。但还有一个问题。您已完成EditAsync和EditCompleted。在这两种不同的编辑方法中,你如何区分GET和POST?如果重命名POST操作,则会丢失前面讨论的良好

为ASP.NET MVC创建编辑页面的推荐方法是在名为edit的控制器上有两个方法:一个GET操作和一个POST操作,它们共享相同的名称,但重载方式不同。如果编辑失败,验证错误将显示在POST操作上。然后,用户可以共享该URL或将其添加到书签,即使该URL已从帖子中删除:该URL将在返回时转到GET版本

到目前为止,一切顺利。但还有一个问题。您已完成EditAsync和EditCompleted。在这两种不同的编辑方法中,你如何区分GET和POST?如果重命名POST操作,则会丢失前面讨论的良好行为

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

通常,XyzAsync()方法为XyzCompleted()方法提供一些状态对象,告诉它正在执行的工作单元,因此XyzCompleted()方法可以检查这个对象并做正确的事情。但是,如果您想为每个动词使用不同的完成方法,可以通过以下方式实现:

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

public ActionResult EditGetCompleted() { }

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

public ActionResult EditPostCompleted() { }