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