Валидатор диапазона не работает

1

Я пытаюсь установить 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" />
Теги:
validation

2 ответа

1

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>
  • 1
    Действительно, RangeValidator - неправильный элемент управления, но я бы, вероятно, использовал RegularExpressionValidator него RegularExpressionValidator , поскольку вы получаете все клиент-серверные RegularExpressionValidator бесплатно. Также в вашем примере вы могли бы просто e.IsValid = e.Value.Length == 15 , сохранить несколько нажатий клавиш, и IMO не повредит читабельности?
  • 0
    @DaveParsons Вы правы, соответственно отредактировал мой ответ
Показать ещё 5 комментариев
0

Как упоминалось в комментариях DaveParsons, я также чувствую, что здесь RegularExpressionValidator использовать RegularExpressionValidator.

Вы можете настроить его для проверки определенного диапазона длин, о чем свидетельствует этот ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню