Gram w środowisku ASP.NET MVC Framework. Jedną rzeczą, która naprawdę mnie myli, jest sposób sprawdzania poprawności opublikowanych danych formularza po stronie serwera. . Przypuszczam, że nie wysyłam z powrotem do tego samego adresu URL, ale jeśli nie, jak ponownie wyświetlić formularz z wprowadzonymi danymi i komunikatami o błędach? Ponadto, gdzie powinna iść logika walidacji? W modelu lub kontrolera? Wydaje się, że jest to jeden z niewielu obszarów, w których formularze sieciowe są znacznie silniejsze (brakuje mi kontroli walidacji).Sprawdzanie poprawności opublikowanych danych formularzy w środowisku ASP.NET MVC
Odpowiedz
Czasami warto spojrzeć na ostatni post ScottGu za ASP.Net poprz 5. spacery po próbie walidacji, który jest bardzo interesujący:
Czy spojrzałeś na to? http://www.codeplex.com/MvcValidatorToolkit
Cytat ze strony
walidatora Toolkit oferuje zestaw walidatorów dla nowych ram ASP.NET MVC do walidacji formularzy HTML na klient i po stronie serwera z wykorzystaniem zestawy walidacji .
Obawiam się, że ktoś bardziej doświadczony MVC niż ja musiałby porozmawiać z tym, gdzie w architekturze należy umieścić rzeczy.
Po prostu uczę się szkieletu MVC, więc nie jestem pewien, jak daleko to jest, ale z tego co rozumiem, masz formularz w widoku takim jak Edit.aspx. Ten formularz wysłałby następnie do kontrolera inną metodę działania, taką jak Update(), przekazującą zawartość formularza ustawionego w Edit.aspx jako parametry.
Update(int id, string name, string foo)
Możesz dokonać walidacji w ramach tej metody. Jeśli wszystko jest w porządku,
return View("Item", yourObject)
Oto przegląd przepływu w MVC:
- /nowy - renderować „Nowy” widok zawierający formularz, aby użytkownik mógł wypełnić
- Użytkownik wypełnia formularz i publikuje go/tworzy
- Post jest kierowany do akcji Utwórz na kontrolerze
- W swojej metodzie akcji zaktualizuj model za pomocą dane, które zostały opublikowane.
- Twój model powinien się zatwierdzić.
- Twój kontroler powinien przeczytać, czy model jest ważny.
- Jeśli model jest prawidłowy, zapisz go w bazie danych. Przekieruj do/pokaż, aby wyrenderować przedstawienie Zobacz dla twojego obiektu.
- Jeśli model jest nieprawidłowy, zapisz wartości formularza i komunikaty o błędach w pliku TempData i ponownie przekieruj do akcji Nowa. Wypełnij pola formularza danymi z TempData i wyświetl komunikat (y) o błędzie.
Ramy walidacji pomoże Ci wzdłuż w tym procesie. Ponadto myślę, że zespół ASP.NET MVC planuje ramy sprawdzania poprawności dla następnego podglądu.
Doskonałe podsumowanie! Będzie świetnie z przykładem – Cherian
Dobre podsumowanie! Jedynym problemem, jaki znalazłem, jest to, że chcę mieć możliwość sprawdzenia poprawności typu danych i nie mogę tego zrobić przed przekazaniem danych formularza do modelu, ponieważ będzie on zgłaszał wyjątki podczas jego tworzenia. Czy jest to dobry sposób? – bobwah
TryUpdateModel() pobierze dane twojego formularza i spróbuje umieścić je w twoim obiekcie. Wystarczy użyć FormData jako parametru dla kontrolera, a nie typu obiektu. Inną opcją byłoby zbudowanie niestandardowego spoiwa modelu. Więcej tutaj: http://www.hanselman.com/blog/SplittingDateTimeUnitTestingASPNETMVCCustomModelBinders.aspx –
Istnieje moduł Castle.Components.Validator w projekcie Castle. Jest bardzo zwinny i potężny. Generuje reguły sprawdzania poprawności na podstawie atrybutów modelu (lub dowolnego innego źródła), a nawet może generować walidację JS przy użyciu jQuery, Prototype Validation, fValidate i innych. Oczywiście mądry jest abstrakcyjny weryfikator poza interfejsem IValidationEngine.
O ile mogę powiedzieć, każdy jest wciąż próbując zrozumieć "standardowy" sposób robienia tego. To powiedziawszy zdecydowanie sprawdź najnowsze posty Phila Haacka i Scotta Guthriego na temat MVC, a znajdziesz tam kilka interesujących informacji o tym, jak oni to zrobili. Kiedy po prostu bawiłem się z tym dla siebie, stworzyłem modelBinder dla klasy danych LinqToSql, którą wygenerowałem. Możesz sprawdzić ten artykuł, aby dowiedzieć się, jak umieścić razem podstawowe ModelBinder:
w swoim działaniu, jeśli stworzył „produkt” ModelBinder byłoby po prostu uznanie skargi tak:
public ActionResult Nowy (produkt prod)
I segregator modelu zajmie się przypisaniem zaksięgowanych danych do właściwości obiektów, o ile i tak go zbudowałeś.
Potem w swoim getValue() metoda można realizować niezależnie od poprawności chcesz, czy przy użyciu wyjątek'S, regex, albo cokolwiek można wykonać połączenie takich jak:
(ModelStateDictionary_name) .AddModelError ("form_element_id", " specified_value "," error_message ");
Następnie można po prostu wrzucić widok <% = Html.ValidationSummary()%>, aby wyświetlić wszystkie błędy.
Do sprawdzania poprawności po stronie klienta użyłem jQuery. Po uzyskaniu podstawowej próbki możesz zacząć robić ciekawe rzeczy, łącząc to wszystko z widokami częściowymi i Ajax.
- 1. Adnotacje danych ASP.NET MVC Sprawdzanie poprawności ErrorMessageResourceType
- 2. Sprawdzanie poprawności formularzy w formularzu w Django
- 3. Sprawdzanie poprawności formularzy symfony2 z dodatkowymi polami
- 4. Jak działa sprawdzanie poprawności w ASP.NET MVC 2?
- 5. Jak zapewnić ostrzeżenia podczas sprawdzania poprawności w środowisku ASP.NET MVC?
- 6. zagnieżdżone formularzy w ASP.NET MVC
- 7. Sprawdzanie poprawności JavaScriptu dla formularzy Symfony 2
- 8. Jak ręcznie włączyć sprawdzanie poprawności jQuery z ASP.NET MVC
- 9. ASP.NET MVC 2 i ComponentModel.DataAnnotations Sprawdzanie poprawności: atrybut minimalnej wartości
- 10. MVC asp.net: Przesyłanie wielu formularzy
- 11. Replikacja formularzy sieci Web GridView w ASP.NET MVC
- 12. Zalecenie dotyczące platformy sprawdzania poprawności formularzy sieci Web ASP.NET
- 13. Sprawdzanie poprawności zakresów danych MVC nie działa poprawnie
- 14. Jak usunąć sprawdzanie poprawności danych?
- 15. Sprawdzanie poprawności sprawdzania poprawności Knockout sprawdzanie poprawności
- 16. Sprawdzanie poprawności stronicowanych formularzy w Angular JS (1.x)
- 17. Błędy rejestrowania w środowisku ASP.NET MVC
- 18. Atrybut autoryzacji w środowisku ASP.NET MVC
- 19. MVC sprawdzanie poprawności tylko liczby wyrażeń regularnych?
- 20. Sprawdzanie poprawności danych w sklepie Redux
- 21. MVC Wymagane sprawdzanie poprawności pola nie działa
- 22. Sprawdzanie poprawności formularzy wtyczek Jenkins przy użyciu Ruby
- 23. sprawdzanie poprawności zagnieżdżonych formularzy bez wpływu na formularz rodzica
- 24. Konfigurowanie wielu formularzy/sprawdzanie poprawności na tej samej stronie
- 25. Django: Czyszczenie i sprawdzanie poprawności FORMULARZY zależnych od siebie
- 26. Powielone sprawdzanie poprawności we wszystkich obiektach i modelach formularzy
- 27. Sprawdzanie poprawności JQuery: Sprawdzanie poprawności ukrytych pól
- 28. Jak uzyskać kolekcję błędów stanu modelu w środowisku ASP.NET MVC?
- 29. Sprawdzanie poprawności dla dużych plików po przesłaniu
- 30. Czy istnieje dobre podejście do łączenia uwierzytelniania systemu Windows i uwierzytelniania formularzy w środowisku ASP.NET MVC?
Rzuciłem okiem na projekt CodePlex, ale nie byłem pod wrażeniem tego, co widziałem (w tym czasie). Może teraz jest lepiej. Przyjrzę się jeszcze raz. Oczywiście Jeff i zespół muszą walidować dane formularzy w StackOverflow. Kiedy patrzę na kod HTML strony [Zadaj pytanie] (http://stackoverflow.com/questions/ask), wygląda na to, że strona odsyła do siebie. Zastanawiam się, w jaki sposób wdrażają walidację. –