2016-01-23 3 views
1

Я сделал все, что this page сказал мне, но это не работает, я видел, как люди публиковали эту проблему, и мне сказали добавить обязательный полевой валидатор, я сделал что, все еще не работает.ASP.NET пользовательский валидатор не работает

Вот клиент боковой части

   <asp:CustomValidator 
        ID="CustomValidator1" 
        runat="server" 
        ControlToValidate="TextBoxUsername" 
        ErrorMessage="Username already exists" 
        OnServerValidate="CustomValidator1_ServerValidate" 
        ValidateEmptyText="True" <!--tried without this line--> 
        ValidationGroup="form"> <!--tried without this line--> 
       </asp:CustomValidator> 

Вот # сервер код стороны C

 protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args){ 
      args.IsValid = false; 
     } 

выглядит довольно просто, не так ли? он должен постоянно появляться, не так ли? ну, он появляется только в начале, а затем исчезает навсегда, и это потому, что у меня есть эта строка в методе page_load(), но я также использую его в методе button_click().

Page.Validate(); 
+0

Какая у вас кнопка отправки? – NikolaiDante

+0

'' – Macromeda

+0

'' protected void Button1_Click (отправитель объекта, EventArgs e) { Страница .validate(); // другая строка кода, а не imp } ' – Macromeda

ответ

2

Сначала удалите группу проверки, а также добавить в Text:

<asp:CustomValidator 
    ID="CustomValidator1" 
    runat="server" 
    ControlToValidate="TextBoxUsername" 
    ErrorMessage="Username already exists" 
    Text="Username already exists" 
    OnServerValidate="CustomValidator1_ServerValidate" 
    ValidateEmptyText="True"> 
</asp:CustomValidator> 

ErrorMessage покажет в ValidationSummary управления и Text должен показать, где валидатор.

Обновление кнопку, чтобы вызвать проверку (я считаю, правда по умолчанию в любом случае, но давайте быть явным):

Затем проверьте, если страница действительна после щелчка, Page.Validate не нужно быть так как это будет автоматически для вещей, которые CauseValidation.

protected void Button1_Click(object sender, EventArgs e) 
{ 
    if (Page.IsValid) 
    { 
     // Do Cool Stuff 
    } 
} 

Кроме того, падение останова на методе щелчка при проверке его, как вы не имеете на стороне клиента проводки (например, ClientValidationFunction="somejsfunction" на валидатор), поэтому вы ударите только этот код, когда вы получаете через к стороне сервера Проверка.

+0

та же проблема: в обработчике событий button_click у главного кода у меня есть 'PageValidate(); if (Page.IsValid) {// мой код идет здесь}} 'Итак, да, когда я нажимаю на него, он появляется после загрузки страницы снова, НО после того, как все остальные обязательные поля валидаторы исчезли, вы получаете то, что я говорю ? – Macromeda

+0

см. В edit, вы можете быть заблокированы, чтобы получить проверку стороны _server_ другой проверкой стороны _client_ в остальной части формы. – NikolaiDante

+0

, если вы обновите свой пост с помощью [mcve] (http: // stackoverflow.com/help/mcve) Я закручу его в тестовом приложении в своем объявлении по утрам (здесь полночь) и позаниматься более подробным утром. – NikolaiDante