Jest to zgodne z projektem i ma tendencję do odrzucania wielu osób. Parametr RegularExpressionValidator nie powoduje, że pole jest obowiązkowe i pozwala je pozostawić puste i akceptuje białe znaki. Format \ d + jest poprawny. Nawet użycie^\ d + $ spowoduje ten sam problem z dopuszczeniem białych znaków. Jedynym sposobem na wymuszenie tego, aby uniemożliwić białe znaki, jest także użycie RequiredFieldValidator do działania na tej samej kontrolce.
Jest za tym RegularExpressionValidator documentation, który stanowi:
Validation powiedzie, jeśli kontrola wprowadzania jest pusty. Jeśli wymagana jest wartość wymagana dla skojarzonego sterowania wejściowego , należy użyć kontrolki RequiredFieldValidator oprócz kontrolki RegularExpressionValidator .
Sprawdzanie wyrażeń regularnych pola w kodzie źródłowym działa zgodnie z oczekiwaniami; jest to tylko problem z funkcją RegularExpressionValidator. Możesz więc użyć CustomValidatora zamiast tego i powiedzieć args.IsValid = Regex.IsMatch(txtInput.Text, @"^\d+$")
, a jeśli zawiera on białe spacje, to zwróci false. Ale jeśli tak jest, dlaczego nie wystarczy użyć RequiredFieldValidator w dokumentacji i uniknąć pisania niestandardowego kodu? Również parametr CustomValidator oznacza obowiązkowy odświeżenie (chyba że podasz skrypt sprawdzania poprawności klienta z odpowiednikiem regex javascript).
wszystkie białe spacje są uważane za puste? wygląda na wykończenie na serwerze jest odpowiedzią. –
Tak, pozostawiając puste miejsce lub dodając białe znaki. Po wprowadzeniu znaku aktywator uruchomi się, więc wpisanie "10" jest poprawne. Możesz zachować ją taką, jaka jest, wiedząc, że cokolwiek ją pokona, będzie prawidłową liczbą lub białymi znakami. W każdym razie zmniejsz swoją wartość. –
dzięki Ahmad. Żałuję, że dokumenty MSDN nie powiedzieliby "wszystkie spacje są puste"! –