私はまだ MVC プログラミングの方法を学んでいますが、コントローラー内の Get および POST ActionResult 関数に関して 1 つのことを明確にするために 1 つの質問があります。考えられる 3 つのシナリオ (実際には 3 つの質問) を示します。
私の最初のシナリオ:
public ActionResult Derp()
{
Derpina derpina = new Derpina(); //Should I need to pass this to View?
return View(derpina);
}
[HttpPost]
public ActionResult Derp()
{
Derpina derpina = new Derpina();
UpdateModel(derpina);
//doStuff and save to DB
return RedirectToAction("Index");
}
私の2番目のシナリオ:
public ActionResult Derp()
{
return View();
}
[HttpPost]
public ActionResult Derp()
{
Derpina derpina = new Derpina(); //Is this the cleanest way?
UpdateModel(derpina);
//doStuff and save to DB
return RedirectToAction("Index");
}
私の 3 番目のシナリオ:
public ActionResult Derp()
{
Derpina derpina = new Derpina();
return View(derpina);
}
[HttpPost]
public ActionResult Derp(Derpina derpina)
{
UpdateModel(derpina); //Should I need to do that at all?
//doStuff and save to DB
return RedirectToAction("Index");
}
新しいエンティティを作成してビューに渡す必要がないため、2 番目のシナリオに傾いています。私はそれが私が皆さんに尋ねている理由だと思います.誰かが私に「ばかげた質問」はないと言ったので、あなたが私に耐えてくれることを願っています:)
- 新しく作成した Derpina をビューに渡す必要がありますか
- 2 番目のシナリオは「ベスト プラクティス」ではないでしょうか。
- 3 番目のシナリオで、Derpina をパラメーターとして HttpPost 関数に渡すと、MVC フレームワークはまだモデルを更新していませんか?
英語は私の母国語ではないので、これらの質問が意味をなすことを願っています. とにかく、あなたが私に明確にするために私に与えることができるどんな助けにも前もって感謝します.
編集済み
私が受け取った1つの回答の後、4番目のシナリオを追加したいと思います:
public ActionResult CreateDerp()
{
return View();
}
[HttpPost]
public ActionResult CreateDerp(Derpina derpina)
{
UpdateModel(derpina);
//doStuff and save to DB
return RedirectToAction("Index");
}
GET関数でモデルをビューに送信する必要がない場合、それは正しいアプローチでしょうか? たとえば、上記のコードが示すように Create 関数を使用していた場合。