Валидатор поля asp.net не запускается после частичного обновления страницы

У меня есть 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);
}

Может ли кто-нибудь сказать мне, как повторно включить валидаторы поля после частичного обновления страницы?


person surajnaik    schedule 13.06.2011    source источник


Ответы (1)


Вы уверены, что валидатор включен после того, как btnGetValue вернется и обновит UpdatePanel? Как вы проверяете включение валидатора? Вы пробовали включить валидатор в код программной части?

protected void btnGetValue_Click(object sender, EventArgs e) {
    txtSomeValue.Text = DateTime.Now.ToString();

    rqdtxtSomeValue.Enabled = true;
    ScriptManager.RegisterStartupScript(btnGetValue, btnSave.GetType(), "btnGetValue_Click", script, true); 
}
person Chris Porter    schedule 23.06.2011