Пользовательский валидатор не работает, но позволяет публиковать сообщения обратно - PullRequest
2 голосов
/ 20 сентября 2011
        <div>
            <asp:Label ID="lblClientId" runat="server" CssClass="label" meta:resourcekey="lblClientIdResource" /> 
            <asp:TextBox ID="tbClientId" runat="server"  style="width:150px; "/>
            <asp:Button ID="btnClientId" runat="server"  style="width:50px;" meta:resourcekey="btnClientIdResource" />
            <asp:CustomValidator ID="rfvClientId" runat="server" ValidationGroup="ClientId" meta:resourcekey="rfvClientIdResource" ControlToValidate="tbClientId" ClientValidationFunction="BtnClickClientId" style="position:absolute;"  ValidateEmptyText="True" ><asp:Image ID="Image2" ImageUrl="caution_20.png" runat="server" /></asp:CustomValidator>
       </div>



<script type="text/javascript">
        function BtnClickClientId(session, args) {
            ButtonClick(session, args, "<%= tbClientId.ClientID %>", "<%= lblClientId.ClientID %>");
        }
        window.onload = function () {
            document.getElementById('<%= tbClientId.ClientID%>').focus();
        };
    </script>


<asp:ValidationSummary ID="ClientIdValidationSummary" runat="server" BackColor="LightGray" DisplayMode="BulletList" CssClass="validationSummary" EnableClientScript="true" HeaderText='<%$ Resources:GlobalResource, ValidationSummaryResource %>'/>

Таким образом, этот метод ButtonClick () работает и был протестирован независимо. Проблема в том, что когда я ничего не вводю в текстовое поле и нажимаю кнопку, валидатор работает как положено и появляется на экране. Тогда это исчезает. Он также никогда не отображается в сводке проверки страницы. Как мне заставить это работать?

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

     <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="tbClientId" ErrorMessage="RequiredFieldValidator" style="position:absolute;"><asp:Image ID="Image2" ImageUrl="caution_20.png" runat="server" /></asp:RequiredFieldValidator>
            <asp:CustomValidator ID="rfvClientId" runat="server" ValidationGroup="ClientId" meta:resourcekey="rfvClientIdResource" ControlToValidate="tbClientId" ClientValidationFunction="BtnClickClientId" style="position:absolute;"  ValidateEmptyText="True" ></asp:CustomValidator>

Этот код работает, но мне не нужно использовать 2 валидатора.

1 Ответ

4 голосов
/ 20 сентября 2011

Вам необходимо установить «arg.IsValid» в «true» или «false» в функции javascript в зависимости от ваших требований (т. Е. В «true», если вы считаете, что проверка прошла успешно, и в противном случае - false). Кроме того, в коде файла всегда рекомендуется проверять свойство Page.IsValid внутри обработчика события нажатия кнопки. Итак, в javascript добавьте это.

  arg.IsValid = false;

и в коде позади

  protected void button_click(..)
  {
       if (Page.IsValid)
       {
           // Your code, if any exists
       }
  }

Надеюсь, это поможет !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...