Esto es por diseño y tiende a echar a muchas personas. El CommonExpressionValidator no hace que un campo sea obligatorio y permite que esté en blanco y acepta espacios en blanco. El formato \ d + es correcto. Incluso el uso de^\ d + $ dará como resultado el mismo problema de permitir el espacio en blanco. La única forma de forzar esto para que no permita el espacio en blanco es incluir un RequiredFieldValidator para operar con el mismo control.
Esto es por la RegularExpressionValidator documentation, que establece:
validación se realiza correctamente si el control de entrada está vacía. Si se requiere un valor de para el control de entrada asociado , use un control RequiredFieldValidator además del control RegularExpressionValidator.
Una comprobación de expresión regular del campo en el código subyacente funcionaría como se esperaba; esto es solo un problema con RegularExpressionValidator. Por lo tanto, podría usar un CustomValidator en su lugar y decir args.IsValid = Regex.IsMatch(txtInput.Text, @"^\d+$")
y si contenía espacios en blanco, devolvería false. Pero si ese es el caso, ¿por qué no utilizar el RequiredFieldValidator según la documentación y evitar escribir código personalizado? También un CustomValidator significa una devolución de datos obligatoria (a menos que especifique un script de validación del cliente con una expresión regular javascript equivalente).
todos los espacios en blanco se consideran vacíos? parece que el ajuste en el servidor es la respuesta. –
Sí, dejarlo en blanco o agregar espacios en blanco es el mismo. Una vez que se ha ingresado un carácter, se activará el validador, por lo que ingresar "10" es válido. Puede mantenerlo como está, sabiendo que lo que sea que lo haga será un número válido o un espacio en blanco. En cualquier caso, recorte su valor. –
gracias Ahmad. ¡ojalá que los documentos de MSDN dijesen "todos los espacios en blanco están vacíos"! –