2013-03-14 23 views
7

Sto usando la griglia telerik mvc. Nella mia tabella ho una chiave univoca definita per un campo. E in controller sto rilevando l'errore usando try ... catch in DbUpdateException.ModelState.AddModelError non mostra alcun messaggio

nel blocco catch. Voglio gestire l'errore e visualizzare il messaggio di errore in vista. Quindi, utilizzando seguente riga,

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

Ma questo non è che mostra un messaggio di errore. Qualche idea del perché?

+0

hai una proprietà con nome "PROGRAM_ID" anche nel tuo modello? e assicurati di avere la chiamata helper di convalida come suggerito da Darin –

risposta

10

Assicurarsi di avere un corrispondente ValidationMessage nella vista con la stessa chiave:

@Html.ValidationMessage("PROGRAM_ID") 
+0

ma sto usando la griglia telerik mvc e la modalità di aggiunta/modifica in linea –

+0

Oh suppongo che tu stia aggiungendo l'errore del modello alla chiave sbagliata. Probabilmente hai una matrice di questi id. Qualcosa come 'ModelState.AddModelError (" SomeCollection [2] .PROGRAM_ID "," L'accesso per questo programma esiste già. ");'. Ovviamente tutto ciò dipenderà dai tuoi modelli. –

+0

no .. Ho ricontrollato ... il nome della proprietà è corretto e anche un campo di valore singolo non un array .. –

7

ValidationSummary visualizzerà solo ModelErrors per String.Empty come chiave. Per visualizzare un errore aggiunto con ModelState.AddModelError nel tuo validationsummary, cambia il tuo codice in:

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