一个很大的页面,按钮的事件委托代码正常,使用了RequiredFieldValidator和RegularExpressionValidator 验证控件,而且有检查验证空间的IsValid的代码:
IEnumerator myEnumerator= this.Validators.GetEnumerator();
while (myEnumerator.MoveNext())
{
object myObject = myEnumerator.Current;
if(myObject.GetType().Equals(typeof(RequiredFieldValidator)))
{
RequiredFieldValidator ckb = (RequiredFieldValidator) myObject;
Response.Write(ckb.ID + ckb.IsValid + "<BR>");
}
if(myObject.GetType().Equals(typeof(RegularExpressionValidator)))
{
RegularExpressionValidator ckb = (RegularExpressionValidator) myObject;
Response.Write(ckb.ID + ckb.IsValid + "<BR>");
}
}
Response.Write(Page.IsValid);点击按钮时页面上输出,这些debug代码输出都是true,但是就是不去调用按钮的事件处理函数。实在想不通啊 。.NET就用了两个月,边学边干项目,这个问题花了一整天时间了,高手们快出手吧....

解决方案 »

  1. .net应该没有问题,2003 framework,上面的页面是在一个网页对话框中打开的,每次点击按钮,叶面就刷新一下,把所有的debug信息输出,debug信息显示page.isvalid是true,事件处理函数是通过在aspx的设计界面双击按钮自动生成的,在里面设了断点,但是就使不会到达这个断点,真是邪门了
      

  2. 我的问题是这个页面中按钮很多,要分步提交表单的内容,重新加按钮工作量不小。而且,要命的是这个页面有时候可以提交,有时候不可以,不可以提交的时候占多数,真是faint,继续讨论 ...
      

  3. 问题搞定了,用下面的代码检查页面上面所有验证控件,
    Page.Validate();
                    /*
    IEnumerator myEnumerator= this.Validators.GetEnumerator();
    while (myEnumerator.MoveNext())
    {
    object myObject = myEnumerator.Current;

    if(myObject.GetType().Equals(typeof(RequiredFieldValidator)))
    {
    RequiredFieldValidator ckb = (RequiredFieldValidator) myObject;
    Response.Write(ckb.ID + ckb.IsValid + "<BR>");
    }
    if(myObject.GetType().Equals(typeof(RegularExpressionValidator)))
    {
    RegularExpressionValidator ckb = (RegularExpressionValidator) myObject;
    Response.Write(ckb.ID + ckb.IsValid + "<BR>");
    }
    }
    Response.Write(Page.IsValid);
    */
    找到出问题的验证控件,把它的isvalid属性设置为true
    结题!
    所有回答问题的人都给分
      

类似问题 »