複数ステップの登録フォームがあります。
ページ 1 (メール) -> ページ 2 (名前) -> ページ 3 (成功)
私のページ 1 では、クエリ文字列を介して電子メール フィールドに事前入力できます。
問題は 2 ページにあります 名前フィールドが空で送信された場合、検証エラーを表示できません。
ページ 2 モデルの名前フィールドに必須属性を適用すると、ページ 1 -> ページ 2 の呼び出しは常に失敗します。そのため、必要な属性を取り出して、ページ 2 と同じですが、名前に必要な属性を付けて、ページ 3 の複製ビュー モデルを作成しました。ページ 3 は、名前が空でモデルが無効かどうかを検出できるため、この時点でページ 2 にリダイレクトされますが、ページ 2 のビューでは、名前フィールドの周りに検証エラーが表示されません。
私に何ができる ?
ViewModel コード:
public Class StepOneViewModel
{
[Required]
public string Email{ get; set; }
}
public Class StepTwoViewModel
{
[Required]
public string Email{ get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public Class StepTwoViewModelPOST
{
[Required]
public string Email{ get; set; }
[Required]
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Required]
[Display(Name = "Last Name")]
public string LastName { get; set; }
}
コントローラーコード:
public ActionResult Step1(string email)
{
return View();
}
[HttpPost]
public ActionResult Step1(StepOneViewModel viewModel)
{
if (!ModelState.IsValid)
return View();
else
return RedirectToAction("Step2", viewModel);
}
public ActionResult Step2(StepTwoViewModel viewModel)
{
if (!ModelState.IsValid)
return RedirectToAction("Step1", viewModel);
else
{
return View(viewModel);
}
}
[HttpPost]
public ActionResult Step2(StepTwoViewModelPOST viewModel)
{
if (!ModelState.IsValid)
return RedirectToAction("Step1", viewModel);
else
{
return Content("Success");
}
}