2013-03-14 17 views
7

Ich benutze Telerik MVC Grid. In meiner Tabelle habe ich einen eindeutigen Schlüssel für ein Feld definiert. Und im Controller erhalte ich den Fehler mit try ... catch in DbUpdateException.ModelState.AddModelError zeigt keine Nachricht

im catch block Ich möchte den Fehler behandeln und Fehler messagesage in Sicht. Also mit folgenden Zeile,

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

Aber das zeigt keine Fehlermeldung. Irgendeine Idee warum?

+0

Haben Sie in Ihrem Modell auch eine Eigenschaft mit dem Namen "PROGRAM_ID"? und stellen Sie sicher, Sie haben die Validierung Helfer Aufruf wie von Darin –

Antwort

10

Stellen Sie sicher, dass Sie eine entsprechende ValidationMessage Ihrer Ansicht nach mit dem gleichen Schlüssel haben:

@Html.ValidationMessage("PROGRAM_ID") 
+0

vorgeschlagen, aber ich benutze Telerik MVC Grid und Inline hinzufügen/bearbeiten Modus –

+0

Oh, dann denke ich, dass Sie den Modellfehler auf den falschen Schlüssel hinzufügen. Sie haben wahrscheinlich ein Array dieser IDs. Etwas wie 'ModelState.AddModelError (" SomeCollection [2] .PROGRAM_ID "," Zugriff für dieses Programm ist bereits vorhanden. ");'. Natürlich hängt das alles von Ihren Modellen ab. –

+0

Nein .. Ich habe überprüft, ... Eigenschaft Name ist richtig und auch seine ein Wert Feld nicht ein Array .. –

7

Validation nur ModelErrors für String.Empty als Schlüssel angezeigt wird. Um einen Fehler anzuzeigen, der mit ModelState.AddModelError in Ihrer Validierungssummary hinzugefügt wurde, ändern Sie Ihren Code in:

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