我有一個採取模型列表的操作。我想單獨驗證每個模型集合與整個模型集合。我試圖使用TryValidateModel,但它似乎如果我的模型中的任何一個是無效的,所有這些都是無效的。我的表單顯示5個SurveyResponseModels(一個包含兩個必需字符串和兩個整數的類)。如果我完全填寫所有五個模型,我會得到下面的validCount = 5。但是,如果五個模型中的任何一個都不完整(因此驗證失敗),我會得到一個0的validCount。TryValidateModel的預期行爲是什麼?如果是這樣,關於如何我可以一次驗證這些的任何想法?在代碼ASP.NET MVC3 TryValidateModel驗證整個模型集合,而不僅僅是單個實例
[HttpPost]
public ActionResult Create(IList<SurveyResponseModel> respondents)
{
int validCount = 0;
foreach (SurveyResponseModel respondent in respondents)
{
if (TryValidateModel(respondent))
{
validCount++;
}
}
ModelState.AddModelError("", validCount.ToString() + " respondents passed validation");
}
他有一個好點。模型狀態是一個單獨的實例,它將保存每個交互的值。一旦出錯,由於您選擇的邏輯,所有這些都會失敗。也許你應該嘗試分別評估每個狀態。您可以使用IValidatableObject來實現所需的行爲 – 2012-08-21 02:24:09