所以我做的是,我有一個控制器,檢查我的表單中的輸入是否正確。如果不是,它會在ViewBag中放入一條錯誤消息並返回視圖。像這樣(不重要的東西離開了):ASP.NET MVC3在使用FormCollection之後再次填寫表單
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)[email protected]" value="" />
<input name="@(cr.Category.naam)[email protected]" value="" />
<input name="@(cr.Category.naam)[email protected]" 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)[email protected]" value="@if (ViewBag.FormCollection != null) { ((FormCollection)ViewBag.FormCollection).Get(cr.Category.naam + "-name-" + i);}" />
但是,它不符合的FormCollection的數值輸入字段填寫.. 。FormCollection不是空的(測試它)和名稱是相同的(計數器(我)不會改變或什麼)。 我在做什麼錯?
在此先感謝
這就是我在其他觀點中所做的,是的。但是這個觀點不同,它是一種靜態的視圖,它創建了不同模型的實例。不僅個人(我所展示的),而且還有一個組織,一個團隊等的輸入字段。然後個人被添加到控制器中的組織等等。因此,不存在1個模型,但是多個。 – Hanz 2011-05-18 10:49:29