2012-03-23 14 views
5

Obecnie mam aplikację MVC 3 przy użyciu silnika Razor View. Mam włączone dyskretne sprawdzanie poprawności. Problem polega na tym, że z jakiegoś powodu podczas wczytywania strony mój widok edycji wyświetla błędy dla wymaganych pól (nawet jeśli te pola mają wartość). Czy ktoś inny na to wpadł? Wszelkie sugestie dotyczące rozwiązania tego problemu? Dzięki.Wypalanie sprawdzania poprawności na stronie Ładowanie

Próbka Pole problemu:

<div class="full"> 
      <label>Description:</label> 
      @Html.EditorFor(x=>x.Description, new{@class="super-textarea"}) 
      @Html.ValidationMessageFor(x => x.Description) 

     </div> 

danych Adnotacje modelu:

 [Required, DataType(DataType.MultilineText)] 
    public virtual string Description { get; set; } 

webconfig włączone ustawienia:

 <add key="ClientValidationEnabled" value="true" /> 
<add key="UnobtrusiveJavaScriptEnabled" value="true" /> 

i oczywiście odpowiednie pliki jquery ....

+0

Twój wyciąg kod pomogłoby dużo – AFD

+0

Więc ... to faktycznie nie wydają się być problem z dyskretnym sprawdzaniem poprawności, ale raczej, że mój stan modelu staje się nieważny przed załadowaniem strony ... – user1287132

Odpowiedz

10

Ok. Znalazłem problem. Sprawdzanie poprawności miało miejsce w związku z próbą nawiązania Modelowania. Stało się tak, ponieważ nasza metoda Get wygląda tak.

[HttpGet, RequestedObjectFilter] 
    public virtual ViewResult Edit(TKey id, T requestedObject) 
    { 

     return View(requestedObject); 
    } 

Cechą .NET MVC jest to, że w każdej chwili wartość odniesienia jest przekazywana jako parametr w podpis metody z ViewResult, ModelBinding jest wyzwalany, który z kolei odpala walidacji. Przyczyną, dla której przechodziliśmy w obiekcie do naszej metody, był obiekt RequestedObjectFilter, który pobrał powiązany obiekt z naszego abstrakcyjnego repozytorium i przekazał go do tej metody za pośrednictwem właściwości ActionParameters. Odnowiliśmy nasz RequestedObjectFilter, aby zamiast tego ustawić ViewModel, co pozwoli nam usunąć parametr z metody, rozwiązując w ten sposób problem. Teraz nasza metoda wygląda następująco:

 [HttpGet, RequestedObjectFilter] 
    public virtual ViewResult Edit(TKey id) 
    { 

     return View(); 
    } 
+0

Świetnie! To mi pomogło, ponieważ miałem ten sam problem, dziękuję. –

14

Można również usunąć błędy z ModelState

ModelState.Clear(); 
+0

Po wielu próbach różnych rzeczy, w tym zobaczeniu tego wpisu, ale nie myśląc, że to dotyczyło, myliłem się. To naprawiło mój problem. – Caverman

Powiązane problemy