我有一个采取模型列表的操作。我想单独验证每个模型集合与整个模型集合。我试图使用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