У меня есть TextBox, RequiredFieldValidator и кнопка внутри Asp.net UpdatePanel. Первоначально для свойства Enabled объекта RequiredFieldValidator установлено значение false, поэтому при нажатии кнопки внутри UpdatePanel проверка не срабатывает в первый раз. Однако в обработчике событий кнопки внутри UpdatePanel я устанавливаю значение TextBox на DateTime. Теперь я также регистрирую сценарий запуска с помощью метода ScriptManager.RegisterStartupScript, чтобы включить вышеупомянутый валидатор на клиенте, вызвав функцию ValidatorEnable. У меня также есть кнопка за пределами UpdatePanel, при нажатии которой RequiredFieldValidator должен срабатывать, если TextBox пуст. Однако после нажатия кнопки внутри UpdatePanel значение TextBox устанавливается на самую последнюю дату и включен валидатор, но после удаления текста из текстового поля и нажатия кнопки за пределами панели обновления валидатор не запускается.
См. Следующий код.
Код на стороне клиента:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="txtSomeValue" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="rqdtxtSomeValue" runat="server" Enabled="false" ErrorMessage="*"
ControlToValidate="txtSomeValue"></asp:RequiredFieldValidator>
<asp:Button ID="btnGetValue" runat="server" Text="Get Current Date" OnClick="btnGetValue_Click" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button ID="btnSave" runat="server" Text="Save" />
Код на стороне сервера:
protected void btnGetValue_Click(object sender, EventArgs e)
{
txtSomeValue.Text = DateTime.Now.ToString();
string script = @"javascript:ValidatorEnable(document.getElementById('" + rqdtxtSomeValue.ClientID + "', true))";
ScriptManager.RegisterStartupScript(btnGetValue, btnSave.GetType(), "btnGetValue_Click", script, true);
}
Может ли кто-нибудь сказать мне, как повторно включить валидаторы поля после частичного обновления страницы?