【发布时间】:2012-12-25 02:18:39
【问题描述】:
我有一个控件,它应该提示用户选择会话的 customerId 或页面的旧视图状态 customerId。为此,该控件在基于
的代码中进行了验证On postback, how can I add a error message to validation summary?
当单步执行代码时,我看到 err.IsValid 设置为 false。但是当我到达 Page.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);
}
}
【问题讨论】:
-
必须在同一个验证组;确保是这种情况
标签: c# asp.net validation