2014-09-22 2 views
0

Я хочу проверить свой пользовательский контроль всякий раз, когда происходит обратная связь. Это свойство внутри UserControl пожелания я хочу подтвердить:Проверка элементов управления пользователя, независимо от управления страницами

public string Text 
    { 
     get 
     { 
      return DateTextBox.Text; 
     } 
     set 
     { 
      DateTextBox.Text = value; 
     } 
    } 

Text недвижимость всегда должна иметь формат как «YYYY/MM/DD». Я хочу, чтобы пользователь добавлял этот элемент управления на каждую страницу, когда пользователь отправляет любую кнопку, если код Text недействителен, событие отправки кнопки не поднимается. Основная проблема заключается в том, что я хочу, чтобы это работало без изменения какой-либо страницы. Я имею в виду, не проверяя что-то вроде Page.IsValid.

ответ

1

Вы можете сделать это путем добавления элементов управления проверки ASP.Net в код .ascx разметки.

Попробуйте добавить следующий код

<asp:CompareValidator 
    id="dateValidator" runat="server" 
    Type="Date" 
    Operator="DataTypeCheck" 
    ControlToValidate="DateTextBox" 
    ErrorMessage="Please enter a valid date."> 
</asp:CompareValidator> 
<asp:RequiredFieldValidator 
    ID="RequiredFieldValidator1" 
    ControlToValidate="DateTextBox" 
    runat="server" 
    ErrorMessage="Required!"> 
</asp:RequiredFieldValidator> 

Но, проблема с этим методом является все кнопки (Сохранить или Submit), не имея CauseValidation = False будет пытаться проверить эту TextBox.

Чтобы преодолеть эту проблему, вам нужно

  1. Если кнопки в пользовательском элементе управления добавить ValidationGroup ко всем элементам управления (TextBox, проверяющие элементы управления, кнопки и т.д.)

  2. Если кнопки находятся в вашем страницы добавьте открытое свойство в ваш контроль, чтобы удерживать ValidationGroup и назначить это значение всем элементам управления и всем кнопкам, которые необходимо проверить.

1

Try ниже код: -

public string Text 
     { 
      get 
      { 
       return DateTextBox.Text; 
      } 
      set 
      { 
       try 
       { 
        DateTime d = DateTime.ParseExact(value, "yyyy/MM/dd",CultureInfo.InvarientCulture); 
        DateTextBox.Text = value; 
       } 
       catch(Exception ex) 
       { 
        //// Code when it does not match format. 
       } 
      } 
    } 
+1

Этот метод не остановит обратную передачу – Sam

Смежные вопросы