つまり、フォームへの入力が正しいかどうかをチェックするコントローラーがあります。そうでない場合は、エラー メッセージを ViewBag に入れ、ビューを返します。このように(重要でないものは省きます):
var name = formCollection.Get(cr.Category.name + "-name-" + i).Trim();
var dateOfBirth = formCollection.Get(cr.Category.name + "-dateOfBirth-" + i).Trim();
var passportno= formCollection.Get(cr.Category.name + "-passportno-" + i).Trim();
if (name.Equals("") || dateOfBirth.Equals("") || passportno.Equals(""))
{
ViewBag.ErrorMessage = "Please fill in all required fields at " + cr.Category.naam;
return View("BulletinForm3");
}
そして、私のビューは次のようになります(重要でないものは省略されています):
<input name="@(cr.Category.naam)-name-@i" value="" />
<input name="@(cr.Category.naam)-dateOfBirth-@i" value="" />
<input name="@(cr.Category.naam)-passportno-@i" value="" />
@if (ViewBag.ErrorMessage != null)
{
<p class="error">@ViewBag.ErrorMessage</p>
}
では、必須フィールドへの入力を忘れるとどうなりますか? ビューを返し、エラーメッセージを表示しますが、すでに入力されているすべてのフィールドが再び空になっています...だから私がしたいのは、ビューを返した後に FormCollection を使用してフィールドに入力し直すことです。次のように FormCollection を ViewBag に入れます。
ViewBag.ErrorMessage = "Please fill in all required fields at " + cr.Category.naam;
ViewBag.FormCollection = formCollection;
return View("BulletinForm3");
ビューでこれを変更しました:
<input name="@(cr.Category.naam)-name-@i" value="@if (ViewBag.FormCollection != null) { ((FormCollection)ViewBag.FormCollection).Get(cr.Category.naam + "-name-" + i);}" />
ただし、入力フィールドに FormCollection の値が入力されません... FormCollection は空ではなく (テスト済み)、名前は同じです (カウンター (i) は変更されません)。私は何を間違っていますか?
前もって感謝します