我的样本取自
示例在客户端工作正常,但在代码后面他没有检查页面验证他只设置
protected void Button1_Click(object sender, EventArgs e)
{
ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('PostBack occured.');", true);
}
当我更新后面的代码来验证像这样的页面
protected void Button1_Click(object sender, EventArgs e)
{
Page.Validate("Group1");
if (Page.IsValid)
{
ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('PostBack occured.');", true);
}
}
Page.IsValid总是返回false,即使我在java脚本中禁用了ID =“valName”的RequiredFieldValidator验证,如下所示:
<form id="form1" runat="server">
<u>JavaScript</u>
<hr />
UserName:
<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="valName" ControlToValidate="txtName" runat="server"
ErrorMessage="*Required" ForeColor="Red" ValidationGroup="Group1" />
<br />
Enable Validation:
<input type="checkbox" id="CheckBox1" onclick="ToggleValidator(this);" checked="checked" />
<br />
<asp:Button Text="Submit" runat="server" OnClick="Button1_Click" ValidationGroup="Group1" />
<script type="text/javascript">
function ToggleValidator(chk) {
var valName = document.getElementById("<%=valName.ClientID%>");
ValidatorEnable(valName, chk.checked);
}
</script>
<br />
<br />
</form>
请解决此问题的任何帮助
答案 0 :(得分:1)
我有一个类似的问题。除了在客户端禁用验证器外……
document.getElementById('<%= valName.ClientID%>').enabled = false;
...我在按钮单击事件中添加了以下内容:
valName.IsValid = True
答案 1 :(得分:0)
Page.IsValid是在服务器端计算的,并不知道您在客户端关闭了javascript验证。 您可以检查服务器,检查Checkbox1是否忽略验证,即将runat =“server”添加到复选框:
<input type="checkbox" id="CheckBox1" onclick="ToggleValidator(this);" checked="checked" runat="server" />
并确保如果页面验证或未选中复选框,则会触发serverside子句:
protected void Button1_Click(object sender, EventArgs e)
{
Page.Validate("Group1");
if (Page.IsValid || !CheckBox1.Checked)
{
ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('PostBack occured.');", true);
}
}