2013-03-14 85 views
7

我正在使用telerik mvc网格。在我的表格中,我为字段定义了唯一的键。而在控制器中,我正在使用DbUpdateException中的try ... catch捕获错误。ModelState.AddModelError未显示任何消息

在catch块中我想处理错误并显示错误信息。因此,使用以下行,

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

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

+0

您的模型中是否也有名为“PROGRAM_ID”的属性? 并确保你有Darin建议的验证助手调用 – 2013-03-14 08:33:04

回答

10

请确保您在您的视图有相应的ValidationMessage使用相同的密钥:

@Html.ValidationMessage("PROGRAM_ID") 
+0

,但我使用telerik mvc网格和内联添加/编辑模式 – 2013-03-14 10:53:54

+0

哦,那么我想你是在错误的键上添加模型错误。您可能拥有这些ID的数组。类似于'ModelState.AddModelError(“SomeCollection [2] .PROGRAM_ID”,“此程序的访问已存在。”);'。当然,这一切都取决于你的模型。 – 2013-03-14 10:56:28

+0

没有..我再次检查...属性名称是正确的,也是其单个值字段不是数组.. – 2013-03-14 12:14:18

7

的ValidationSummary将只作为的String.Empty按键显示ModelErrors。要在验证摘要中显示添加了ModelState.AddModelError的错误,请将您的代码更改为:

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