Я пытаюсь установить asp.net Обязательный полевой валидатор и валидатор диапазона, но работа с обязательным полем не работает. Зачем?
<asp:TextBox ID="txtCNIC" runat="server" CssClass="textField_width"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtCNIC" ErrorMessage="RequiredFieldValidator" ForeColor="#FF3300" SetFocusOnError="True" ValidationGroup="Complaints">CNIC is Required</asp:RequiredFieldValidator>
<asp:RangeValidator
ControlToValidate="txtCNIC"
MinimumValue="14"
MaximumValue="16"
Type="String"
ValidationGroup="Complaints"
EnableClientScript="false"
Text="CNIC can not be longer than 15 characters"
runat="server" />
<asp:Button ID="btnSave" CssClass="btn btn-success" runat="server" Text="Save"
ValidationGroup="Complaints" ClientIDMode="Static" OnClick="btnSave_Click" />
ASP RangeValidator
предназначен для проверки того, что вход находится в заданном диапазоне, тогда как в вашем случае кажется, что вы хотите проверить длину ввода. Чтобы сделать это, вы можете сделать что-то вроде этого:
На своей странице замените RangeValidator
на CustomValidator
:
<asp:CustomValidator runat="server" id="txtCNICValidator"
controltovalidate="txtCNIC" ClientValidationFunction="validateCnic"
errormessage="CNIC must be exactly 15 characters long!" />
И добавьте соответствующую функцию проверки в свой javascript:
<script type="text/javascript">
function validateCnic(sender, args) {
args.IsValid = (args.Value.length == 15);
}
</script>
Как упоминалось в комментариях DaveParsons, я также чувствую, что здесь RegularExpressionValidator
использовать RegularExpressionValidator
.
Вы можете настроить его для проверки определенного диапазона длин, о чем свидетельствует этот ответ.
RangeValidator
- неправильный элемент управления, но я бы, вероятно, использовалRegularExpressionValidator
негоRegularExpressionValidator
, поскольку вы получаете все клиент-серверныеRegularExpressionValidator
бесплатно. Также в вашем примере вы могли бы простоe.IsValid = e.Value.Length == 15
, сохранить несколько нажатий клавиш, и IMO не повредит читабельности?