ModelState.AddModelError不显示任何消息。

10

我正在使用Telerik MVC Grid。在我的表格中,我为一个字段定义了唯一键。在控制器中,我使用try...catch捕获DbUpdateException中的错误。

在catch块中,我想处理错误并在视图中显示错误消息。因此,我使用以下代码行:

ModelState.AddModelError("PROGRAM_ID", "Access for this program already exists.");
return View();

但是这并没有显示错误消息。有任何想法为什么?


你的模型中也有名为"PROGRAM_ID"的属性吗? 并且请确保你按照Darin的建议进行验证助手调用。 - K D
3个回答

12

ValidationSummary只会显示键值为string.empty的ModelErrors。如果要在您的验证摘要中显示使用ModelStateException添加的错误,请更改您的代码:

ModelState.AddModelError(string.Empty, "Access for this program already exists.");

按照Darin的建议,遵循以下两个步骤:
  1. 在控制器代码中添加:ModelState.AddModelError("PROGRAM_ID", "错误消息");
  2. 在视图中添加:@Html.ValidationMessage("PROGRAM_ID")
- Shakil

12

请确保您的视图中有一个相应的 ValidationMessage,并且与相同的键匹配:

@Html.ValidationMessage("PROGRAM_ID")

那么我猜你是将模型错误添加到了错误的键上。你可能有一个这些ID的数组,类似于ModelState.AddModelError("SomeCollection[2].PROGRAM_ID", "Access for this program already exists.");。当然,所有这些都取决于你的模型。 - Darin Dimitrov
不是的..我已经仔细检查了,属性名称是正确的,而且它是一个单值字段而不是数组。 - hetal gala

0

跟随以下两个步骤:(Darin的解决方案有效)

  1. 在控制器中添加:ModelState.AddModelError("PROGRAM_ID", "错误消息");
  2. 在视图中添加:@Html.ValidationMessage("PROGRAM_ID")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接