我仍然在學習繞過MVC編程的方法,並且有一個問題需要我爲我澄清一件事,即關於我的控制器中的Get和POST ActionResult函數。 I'll給你三種可能的情形(實際上是三個問題):在控制器中創建函數的MVC最佳實踐
我的第一個場景:
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");
}
我的第二個場景:
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");
}
我的第三個場景:
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");
}
我傾向於第二種情況,因爲我不需要創建新實體並將其傳遞給View。我想that's爲什麼I'm問你們,曾有人告訴我,有沒有「愚蠢的問題」,所以我希望你能容忍我:)
- 我是否需要通過新創建的Derpina到查看
- 第二種情況不是「最佳實踐」嗎?
- 在第三種情況下,如果我將Derpina作爲參數傳遞到HttpPost函數中,MVC框架是否已經更新模型?
英語不是我的母語,所以我希望這些問題有任何意義。無論如何,提前感謝您的幫助,您可以給我澄清。
EDITED
後一個答案,我收到我要添加第四場景:
public ActionResult CreateDerp()
{
return View();
}
[HttpPost]
public ActionResult CreateDerp(Derpina derpina)
{
UpdateModel(derpina);
//doStuff and save to DB
return RedirectToAction("Index");
}
請問這是正確的做法,我的意思是,如果沒有必要I'm發送模式GET函數中的視圖?例如,如果我使用上面的代碼建議的Create函數。
你好@Freeman,謝謝你的回答。我編輯了我的問題,並想問你是否認爲如果我使用Create()函數,這將是正確的方法? – gardarvalur