我正在使用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">
</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#很新,老实说我没有得到在这里搜索到的类似问题的答案。
非常感谢任何帮助。
答案 0 :(得分:1)
服务器端代码在请求页面时运行,它不起作用,因为您回发(即请求)不同的页面,因此代码永远不会运行。您可以回发到原始页面,然后重定向后面的代码,但最简单的解决方案可能是完全消除orderconfirm.aspx,只是在原始页面中执行所有操作。