我正在检查我的数据库在创建(FooViewModel fvm){…}来查看fvm. conf文件。Prop1和fvm。Prop2在该组合中已经存在;如果是这样,我想在modelstate中添加一个错误,然后返回整个视图。我试着:
public ActionResult Create(FooViewModel fvm){
if (ThatComboAlreadyExists(fvm)) {
ModelState.AddModelError("Model", "There is already one like that");
return View(fvm);
}
}
...但是我没有在Html中显示错误。ValidationSummary,这是我假设它们将出现的地方。我怀疑“模型”不是正确的钥匙,但我还没有找到任何东西。
你可以在你的模型的任何属性上添加模型错误,我建议如果没有任何相关的创建一个新属性。
作为一个例子,我们检查电子邮件是否已经在DB中使用,并将错误添加到操作中的email属性中,以便当我返回视图时,他们知道有一个错误以及如何通过使用显示它
<%: Html.ValidationSummary(true)%>
<%: Html.ValidationMessageFor(model => model.Email) %>
and
ModelState.AddModelError("Email", Resources.EmailInUse);
我最终偶然发现了一个我正在寻找的用法的例子-一般地将错误分配给模型,而不是它的一个属性,就像你通常调用的那样:
ModelState.AddModelError(string key, string errorMessage);
但是使用空字符串作为键:
ModelState.AddModelError(string.Empty, "There is something wrong with Foo.");
错误消息将显示在<%:Html.ValidationSummary() %>中,正如您所期望的那样。