【发布时间】:2011-06-13 13:20:17
【问题描述】:
我在 Asp.net UpdatePanel 中有 TextBox、RequiredFieldValidator 和一个按钮。最初,RequiredFieldValidator 的 Enabled 属性设置为 false,以便在单击 UpdatePanel 内的 Button 时第一次不会触发验证。但是,在 UpdatePanel 内的 Button 事件处理程序上,我将 TextBox 的值设置为 DateTime。现在,我还使用 ScriptManager.RegisterStartupScript 方法注册了一个启动脚本,以通过调用 ValidatorEnable 函数在客户端上启用上述验证器。如果 TextBox 为空,我在 UpdatePanel 外还有一个按钮,点击该按钮时,RequiredFieldValidator 应该触发。但是,在单击 UpdatePanel 内的 Button 后,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);
}
谁能告诉我如何在部分页面更新后重新启用字段验证器?
【问题讨论】:
标签: asp.net asp.net-ajax