4

で2つのオーバーロードされたアクションメソッド(1つはGETアクション用、もう1つはPOSTアクション用)を使用して、post-redirect-getパターンを実装することは可能ですか?

すべてのMVCpost-redirect-getパターンサンプルで、post-redirect-getプロセスの3つの異なるアクションメソッド(Initial Get、Post、およびRedirection Getに対応)を確認しました。それぞれの名前は異なります。で、異なる名前のアクションメソッドを少なくとも3つ持つ必要がありますか?

例:(以下に示すコードは、Post-Redirect-Getパターンに従いますか?)

public class SomeController : Controller
{
    // GET: /SomeIndex/
    [HttpGet]
    public ActionResult Index(int id)
    {
        SomeIndexViewModel vm = new SomeIndexViewModel(id) { myid = id };
        //Do some processing here
        return View(vm);
    }

    // POST: /SomeIndex/
    [HttpPost]
    public ActionResult Index(SomeIndexViewModel vm)
    {
        bool validationsuccess = false;
        //validate
        if (validationsuccess)
            return RedirectToAction("Index", new {id=1234 });
        else
            return View(vm);
        }
    }
}

ご回答ありがとうございます。

4

3 に答える 3

1

あなたのコードは私には問題ないようです。パターンに従い、これが私たちのすべてのプロジェクトでそれを行う方法です。

于 2012-09-09T16:53:37.693 に答える
1

ユニットテストの観点から考えてください。

すべてが1つのアクションで行われると、コードのテストと読み取りが非常に困難になります。私はあなたのコードにこれまで何の問題も見ていません。

于 2012-09-11T10:43:10.147 に答える
0

アクションに同じ名前がある場合は、GETとPOSTを区別する必要があります。また、コンパイルエラーを回避するために、メソッドシグネチャは異なっている必要があります。

これらの「要件」はどちらもコードで問題ないため、PRGでこれらのアクションを使用しても問題はありません。

于 2012-09-09T17:05:35.323 に答える