0

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

当我单击表单的链接按钮时,不会调用 CustomValidator 背后的代码。但是,当我删除 PostBackUrl="orderconfirm.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# 很陌生,老实说,我没有在这里找到类似问题的答案。

任何帮助将不胜感激。

4

1 回答 1

1

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

于 2011-08-31T11:45:21.060 回答