为 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/