Итак, у меня есть контроллер, который проверяет правильность ввода в моей форме.Если это не так, он помещает сообщение об ошибке в 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) не меняется или что-то).Что я делаю не так?
Заранее спасибо