2

ASP.NETMVC4アプリがあります。私はASP.NETMVC4に比較的慣れていません。現在、基本的なタスクリストアプリを作成しようとしています。

public ActionResult Create()
{
  var model = new TaskModel();
  return View("~/Views/Task.cshtml", model);
}

[HttpPost]
public ActionResult Create(TaskModel model)
{
  if (model.TaskName.Length == 0)
  {
     // Display error message
  }
  else 
  {
    // Save to database
    // Write success message
  }
  return View("~/Views/Task.cshtml", model);
}

エラーが発生した場合は、画面にエラーメッセージを表示します。私の問題は、ビューに以前に入力された値が表示されないことです。ビュー全体が空白です。この場合、ビューの値を保持するにはどうすればよいですか?

ありがとうございました!

4

1 に答える 1

3

これには TempData を使用します。

public ActionResult Create()
{
  var model = new TaskModel();
  TempData["task"] = model;
  return View("~/Views/Task.cshtml", model);
}

[HttpPost]
public ActionResult Create()
{
  var task = (TaskModel)TempData["task"];
  UpdateModel(task);
  if (model.TaskName.Length == 0)
  {
     // Display error message
  }
  else 
  {
    // Save to database
    // Write success message
  }

  TempData["task"] = task;
  return View("~/Views/Task.cshtml", model);
}

MVC の動作は WebForms とは異なります。「コントロール」の概念がないため、自分で状態を保持する必要があります。TempData を使用したくない場合の別のオプションは、LosFormatter を使用してコントロールを非表示の HTML フィールドにシリアル化することです。これにより、ASP.NET WebForms の ViewState の機能が複製されます。

于 2013-01-29T18:01:14.637 に答える