所以我要做的是,我有一个控制器来检查表单中的输入是否正确。如果不是,它会在 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)没有改变或其他东西)。我究竟做错了什么?
提前致谢