2010-12-13 7 views
4

ASP.NET MVCの編集ページを作成するには、GETアクションとPOSTアクションの2つのメソッドがあります同じ名前ですが、異なる方法でオーバーロードされます。編集が失敗した場合、POSTアクションに検証エラーが表示されます。その後、POSTのオフの場合でも、URLを共有またはブックマークすることができます.URLはGETバージョンに戻ります。ASP.NET MVCで非同期GET/POSTとアクション名の競合が発生する

これまでのところ、とても良いです。しかし、ASP.NET async pattern on controllersがあります。 EditAsyncとEditCompletedがあります。 2つの異なるEditCompletedメソッドでは、GETとPOSTの違いをどうやって伝えますか? POSTアクションの名前を変更すると、前に説明した素晴らしい動作が失われます。

この2つのパターンを一緒に使用するには良い方法がありますか?

答えて

6

一般に、XyzAsync()メソッドは、XyzCompleted()メソッドに実行中の作業単位を知らせる何らかの状態オブジェクトを提供するので、XyzCompleted()メソッドはこのオブジェクトを検査して正しいことを行うことができます。ただし、各動詞に対して異なる完了メソッドを使用する場合は、次の方法で可能です。

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

public ActionResult EditGetCompleted() { } 

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

public ActionResult EditPostCompleted() { } 
関連する問題