Walidacja formy po stronie klienta

Walidacja formy po stronie klienta
  • Rejestracja: dni
  • Ostatnio: dni
0

Cześć,

jestem w trakcie tworzenia małej stronki w Asp.Mvc 5 w celach dytaktycznych i zastanawiam się nad jedną drobną rzeczą.
Czy gdy walidacja całej formy się nie uda to powinienem wysyłać do kontrolera żądanie post i tam po prostu sprawdzić sobie ModelState.IsValid czy tego żądania w ogóle powinno nie być?

mad_penguin
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
0

A po co? Walidacja po stronie klienta jest po to, żeby nie wysyłać niepotrzebnie żądań do serwera.

  • Rejestracja: dni
  • Ostatnio: dni
0

Mi też się to wydaje logiczniejsze ale jednak nie mogę znaleźć przykładu sprawdzenia walidacji bez wysyłania żądania. Czy mógłbyś dać jakiegoś linka/wskazówkę?

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

EnableClientSideValidation w widoku/configu i powinno działać automatycznie jeśli używasz DataAnnotations.

  • Rejestracja: dni
  • Ostatnio: dni
0

Mam to włączone, walidacja działa (w sensie na widoku dostaje informacje o błedach w formularzu) ale żądanie i tak zostaje wysyłane i w kontrolerze moge sprawdzić że ModelState.IsValid == false. Lecz nadal nie wiem jak zrobić to bez wysyłania formularza.

I pojawił sie drugi problem - jak używając jednej encji mieć na różnych widokach różne komunikaty o errorach (i w ogólności - czy jest możliwe aby przy pomocy atrybutów, dla danego property encji które chce walidować, na jednym widoku sprawdzać np. długość, regex i czy pole jest wypełnione, a na drugim widoku opartym o tej encji, dla tego property walidować tylko i wyłącznie czy pole jest wypełnione)?

EP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 122
1
Zakręcony Młot napisał(a):

Mam to włączone, walidacja działa (w sensie na widoku dostaje informacje o błedach w formularzu) ale żądanie i tak zostaje wysyłane i w kontrolerze moge sprawdzić że ModelState.IsValid == false. Lecz nadal nie wiem jak zrobić to bez wysyłania formularza.

To powinno działać bez wysyłania formularza. Masz zainstalowane jQuery Unobtrusive Validation i pododawane skrypty w headzie?

Zakręcony Młot napisał(a):

I pojawił sie drugi problem - jak używając jednej encji mieć na różnych widokach różne komunikaty o errorach (i w ogólności - czy jest możliwe aby przy pomocy atrybutów, dla danego property encji które chce walidować, na jednym widoku sprawdzać np. długość, regex i czy pole jest wypełnione, a na drugim widoku opartym o tej encji, dla tego property walidować tylko i wyłącznie czy pole jest wypełnione)?

Po prostu nie pchaj bezpośrednio encji na widok, tylko tworz dedykowane do tego klasy (view models) w których będziesz mógł dowolnie dostosowywać dane w zależności od widoków.

  • Rejestracja: dni
  • Ostatnio: dni
0
EntityPamerano napisał(a):
Zakręcony Młot napisał(a):

Mam to włączone, walidacja działa (w sensie na widoku dostaje informacje o błedach w formularzu) ale żądanie i tak zostaje wysyłane i w kontrolerze moge sprawdzić że ModelState.IsValid == false. Lecz nadal nie wiem jak zrobić to bez wysyłania formularza.

To powinno działać bez wysyłania formularza. Masz zainstalowane jQuery Unobtrusive Validation i pododawane skrypty w headzie?

Zakręcony Młot napisał(a):

I pojawił sie drugi problem - jak używając jednej encji mieć na różnych widokach różne komunikaty o errorach (i w ogólności - czy jest możliwe aby przy pomocy atrybutów, dla danego property encji które chce walidować, na jednym widoku sprawdzać np. długość, regex i czy pole jest wypełnione, a na drugim widoku opartym o tej encji, dla tego property walidować tylko i wyłącznie czy pole jest wypełnione)?

Po prostu nie pchaj bezpośrednio encji na widok, tylko tworz dedykowane do tego klasy (view models) w których będziesz mógł dowolnie dostosowywać dane w zależności od widoków.

Właśnie doinstalowałem Unobtrusive Validation i wszystko śmiga.
A co do viewmodeli - faktycznie, że też sam na to po prostu nie wpadłem...
tak czy inaczej wielkie dzięki! : )

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.