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

标签 c# asp.net-mvc asynchronous

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

到目前为止,还不错。但是然后是 ASP.NET async pattern on controllers .您有 EditAsync 和 EditCompleted。在两种不同的 EditCompleted 方法中,如何区分 GET 和 POST?如果重命名 POST 操作,就会失去前面讨论的良好行为。

有什么好的方法可以让这两种模式协同工作吗?

最佳答案

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

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

public ActionResult EditGetCompleted() { }

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

public ActionResult EditPostCompleted() { }

关于c# - ASP.NET MVC 中的异步 GET/POST 和操作名称冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4432653/

相关文章:

c# - 如何在C#中从存储流中播放MP3?

c# - 在 catch 语句之外抛出语句

c# - 自动迁移如何在 Entity Framework 4.3 内部工作

c# - 最小起订量错误设置与异步/等待单元测试不匹配

c# - 上次。等待与线程一起工作吗?

Javascript ES6 - 在不同的 .js 文件中导入函数或变量之前等待模块完成执行

c# - 在 Visual Studio 中着色实例变量

c# - 如何通过代码欺骗MAC地址

asp.net - 对于大型企业项目来说,ASP.NET MVC 是一个糟糕的选择吗?

.net - 在 ASP.NET MVC 中测试 Html Helpers