Walidacja formy po stronie klienta

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ć?

0

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

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ę?

0

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

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)?

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.

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! : )

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0