ASP.NET MVC は初めてです。従来の ASP.NET モデルを長い間使用してきたため、このモデルを理解するには時間がかかります。
物事がどのように機能するかを理解するために、NerdDinner を使用しています。
したがって、いくつかのビューを通過する必要があるオブジェクトがあります。記事NerdDinner Step 6: ViewData and ViewModelに似ています。
Get to Post からのデータを初めて保持し、それを TempData に入れて別のアクション (AnotherAction) に渡します。Get でデータを取得したら、Post で保持できません。
これが私のコードです:
public class DinnerFormViewModel
{
public Dinner Dinner { get; private set; }
public DinnerFormViewModel(Dinner dinner)
{
Dinner = dinner;
}
}
public class DinnersController : Controller
{
public ActionResult Action()
{
Dinner dinner = new Dinner();
return View(new DinnerFormViewModel(dinner));
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Action(Dinner dinner, FormCollection collection)
{
try
{
// Some code
TempData["Dinner"] = dinner;
return RedirectToAction("AnotherAction");
}
catch
{
return View();
}
}
public ActionResult AnotherAction()
{
Dinner dinner = (Dinner)TempData["Dinner"]; // Got my dinner object
return View(new DinnerFormViewModel(dinner));
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult AnotherAction(Dinner dinner, FormCollection collection)
{
// Lost my dinner object, dinner comes in as null
}
}