带有自定义验证器的Page.Validate().犯错.IsValid设置为false后返回true

本文关键字:设置 IsValid 犯错 false true 返回 验证 自定义 Validate Page | 更新日期: 2023-09-27 17:51:18

我有一个控件,它应该提示用户选择会话的customerId或页面的旧视图状态customerId。为此,控件在后面的代码中基于

进行验证。

在回发时,如何在验证摘要中添加错误消息?

当这一步执行代码时,我看到了错误。IsValid设置为false。但当我找到佩奇。IsValid,并查看将其设置为true的验证器。如果您能提供任何信息来帮助我理解为什么这件事没有按照我的预期进行,我将不胜感激。

背后的代码
public partial class CustomerChanged : System.Web.UI.UserControl
{
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        this.Page.PreLoad += Page_PreLoad;
    }
    void Page_PreLoad(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ViewState.Add("CustID", Globals.CurrentCust.CustId);
        }
        if (IsPostBack)
        {
            if (Convert.ToInt32(ViewState["CustID"]) != Globals.CurrentCust.CustId)
            {
                btnOldCustId.Text = "Old CustID 'n" + ViewState["CustID"].ToString();
                btnNewCustId.Text = "New CustID 'n" + Globals.CurrentCust.CustId.ToString();
                btnOldCustId.OnClientClick = string.Format("return changeCustomer({0},'{1}');", ViewState["CustID"].ToString(), Globals.GeneralSiteUrl);
                System.Web.UI.WebControls.CustomValidator err = new System.Web.UI.WebControls.CustomValidator();
                err.IsValid = false;
                err.ErrorMessage = "The customer has changed.";
                Page.Validators.Add(err);
            }
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {            
        if (IsPostBack)
        {
            Page.Validate();
            if (!Page.IsValid)
            {                    
                ScriptManager.RegisterStartupScript(this, this.GetType(), "CustomerChangedModalDialog", "ShowCustomerChangedModalDialog();", true);
            }
        }
    }
    protected void btnNewCustId_Click(object sender, EventArgs e)
    {
        Response.Redirect(Request.RawUrl);
    }
}

带有自定义验证器的Page.Validate().犯错.IsValid设置为false后返回true

您可以使用以下命令向验证摘要添加错误消息:

if (IsPostBack)
{
    Page.Validate();
    var valid = CustomValidate();
    if(valid && Page.IsValid)
    {
    }               
}
protected bool CustomValidate()
{
     var valid = true;
     ///do your validation here
     var validator = new CustomValidator();
     validator.IsValid = false;
     valid = validator.IsValid;
     Validator.ErrorMessage = "Error....";        
     this.Page.Validators.Add(validator);
     return valid;
}