C# OnServerValidate-Won';不能在ASP.NETC中使用PostBackUrl#

C# OnServerValidate-Won';不能在ASP.NETC中使用PostBackUrl#,c#,customvalidator,postbackurl,C#,Customvalidator,Postbackurl,我正在使用CustomValidator验证表单,以便为文本框的背景着色 当我单击表单的链接按钮时,CustomValidator背后的代码不会被调用。但是,当我删除PostBackUrl=“orderconfirm.aspx”时,代码确实会被调用,并且工作正常 aspx页面: <asp:TextBox ID="txtBillingLastName" Name="txtBillingLastName" runat="server">/asp:TextBox> <asp:

我正在使用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>
我对.net/c相当陌生,老实说,我没有在这里找到类似问题的答案


任何帮助都将不胜感激。

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

实际上,您的最终建议是可行的,因为它只需确认刚刚输入的所有详细信息。谢谢你的帮助。
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;
    }