2016-01-23 4 views
0

У меня есть страница с некоторыми текстовыми полями. Некоторые ASP: текстовые поля создаются в файле .aspx, а другие пользовательские - в коде (на основе db). Я хочу подтвердить, чтобы все поля были заполнены.Добавить RequiredFieldValidator для динамически созданного элемента управления в коде за

Когда я нажимаю кнопку ASP: для продолжения, текстовые поля, созданные в моем файле html/aspx, корректно проверяются, но по какой-то причине динамически создаваемые RequiredFieldValidators игнорируются.

Код:

    <tr runat="server" id="weight_row"> 
         <td> 
          Weight: <asp:Label runat="server" ID="weightReqLabel" CssClass="required" Visible="false">*</asp:Label> 
         </td> 
         <td> 
          <asp:TextBox runat="server" ID="weight" CssClass="form-control"></asp:TextBox> 
          <asp:RequiredFieldValidator runat="server" ID="validator_weight" ControlToValidate="weight" SetFocusOnError="true" ErrorMessage="Required." CssClass="validation-error"></asp:RequiredFieldValidator> 
         </td> 
        </tr> 

Вышеприведенные корректно работает.

Однако, это не работает:

TextBox txtbx = new TextBox(); 
txtbx.ID = "TextBox_" + i; 
txtbx.CssClass = "form-control"; 
txtbx.Text = fieldValue; 

RequiredFieldValidator reqFieldVal = new RequiredFieldValidator(); 
reqFieldVal.ID = "validator_" + i; 
reqFieldVal.ControlToValidate = txtbx.ID; 
reqFieldVal.SetFocusOnError = true; 
reqFieldVal.ErrorMessage = "Required"; 
reqFieldVal.EnableClientScript = false; 
reqFieldVal.CssClass = "required"; 
reqFieldVal.Enabled = true; 

placeHolder.Controls.Add(txtbx); 
placeHolder.Controls.Add(reqFieldVal); 

Прежде чем я добавил EnableClientScript=false, ни один из проверки не работает. После того, как я добавил, что нормально закодированные валидаторы работали, но код позади нет.

Я также попытался добавить ValidationGroup и попробовать Page.Validate в OnClick кнопки, но, похоже, это не помогает.

protected void SaveAndContinue_Click(object sender, EventArgs e) 
{ 
    Page.Validate(); 
     if (Page.IsValid) 
     { 
      ((Redirect)) 
     } 

} 

Что я делаю неправильно?

ответ

1

попробовать это

... 
placeHolder.Controls.Add(reqFieldVal); 
reqFieldVal.Validate(); 
... 

он работал для меня

+0

Шрути, спасибо за ответ! Просто комментарий, так как я вижу, что вы новичок в SO. Код может стать беспорядочным в ответах, поэтому мы используем специальное форматирование, чтобы оно выделялось. Я бы рекомендовал вместо того, чтобы говорить что-то вроде «до этого» или «после этой строки», скопируйте эти строки в свой ответ, а затем добавьте или добавьте дополнительный код. Затем выделите все и используйте опцию форматирования кода (кнопка скобок {}). – scottysmalls

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