2013-03-14 13 views
7

Używam telerik mvc grid. W mojej tabeli mam unikalny klucz zdefiniowany dla pola. W kontrolerach łapię błąd za pomocą try ... catch wewnątrz DbUpdateException.ModelState.AddModelError nie wyświetla żadnej wiadomości

w bloku catch Chcę obsłużyć błąd i pokazać komunikat o błędzie w widoku. Tak więc przy użyciu następującej linii:

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

Ale to nie pokazuje komunikatu o błędzie. Każdy pomysł, dlaczego?

+0

czy w swoim modelu masz również właściwość o nazwie "PROGRAM_ID"? i upewnij się, że masz połączenie pomocnicze sprawdzania poprawności zgodnie z sugestią Darin –

Odpowiedz

10

Upewnij się, że masz odpowiedni ValidationMessage w widoku z tym samym kluczem:

@Html.ValidationMessage("PROGRAM_ID") 
+0

, ale korzystam z siatki telerik mvc i wbudowanego trybu dodawania/edycji –

+0

Och, myślę, że dodajesz błąd modelu do niewłaściwego klucza. Prawdopodobnie masz tablicę tych identyfikatorów. Coś w stylu 'ModelState.AddModelError (" SomeCollection [2] .PROGRAM_ID "," Dostęp do tego programu już istnieje. ");'. Oczywiście wszystko to będzie zależeć od twoich modeli. –

+0

no .. Sprawdziłem dwukrotnie ... nazwa właściwości jest poprawna, a także jej jedno pole wartości nie tablica .. –

7

ValidationSummary będzie wyświetlać tylko ModelErrors dla string.empty jako klucz. Aby wyświetlić błąd dodany w narzędziu ModelState.AddModelError w podsumowaniu poprawności, zmień go na:

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