OnServerValidate不适用于ASP.Net C中的PostBackUrl#

时间:2011-08-31 11:39:22

标签: c# customvalidator postbackurl

我正在使用CustomValidator验证表单,因此我可以为文本框的背景着色。

单击表单的链接按钮时,不会调用CustomValidator后面的代码。但是,当我删除PostBackUrl =“orderconfirm.aspx”时,代码会被调用并正常工作。

aspx页面:

<asp:TextBox ID="txtBillingLastName" Name="txtBillingLastName" runat="server">/asp:TextBox>

<asp:CustomValidator 
     ID="CustomValidatorLN" runat="server" 
     ControlToValidate="txtBillingLastName"  
     OnServerValidate="CustomValidatorLN_ServerValidate"
     ValidateEmptyText="True">
</asp:CustomValidator>
<asp:LinkButton 
     ID="OrderButton" runat="server" 
     PostBackUrl="orderconfirm.aspx" 
     onclick="OrderButton_Click">&nbsp;
</asp:LinkButton>
代码背后的代码:

protected void CustomValidatorLN_ServerValidate(object sender, ServerValidateEventArgs args)
    {
        bool is_valid = txtBillingLastName.Text != "";
        txtBillingLastName.BackColor = is_valid ? System.Drawing.Color.White : System.Drawing.Color.LightPink;
        args.IsValid = is_valid;
    }

我对.net / c#很新,老实说我没有得到在这里搜索到的类似问题的答案。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

服务器端代码在请求页面时运行,它不起作用,因为您回发(即请求)不同的页面,因此代码永远不会运行。您可以回发到原始页面,然后重定向后面的代码,但最简单的解决方案可能是完全消除orderconfirm.aspx,只是在原始页面中执行所有操作。