RangeValidator在AutoPostBack上无法验证

时间:2014-05-10 11:06:00

标签: asp.net validation autopostback textchanged

我的问题是范围验证器在AutoPostBack上发生Text_changed事件时没有验证。

我的代码如下:

public string s;
protected void Page_Load(object sender, EventArgs e)
{...
         TextBox textbox = new TextBox();
         textbox.TextChanged += textbox_TextChanged;
         textbox.ID = p.IDProduct.ToString();
         textbox.AutoPostBack = true;

         RangeValidator rangev = new RangeValidator();
         rangev.ControlToValidate = p.IDProduct.ToString();
         rangev.Type = ValidationDataType.Integer;
         rangev.MinimumValue = "0";
         rangev.MaximumValue = "100";
         rangev.ErrorMessage = "*"; 

...} 

void textbox_TextChanged(object sender, EventArgs e)
{
        s=((TextBox)sender).Text
}

变量" s"获取一些不允许的值,例如文本(" asdf")或不在1-100范围内的数字(" 207"例如)。问题是,如何使范围验证器在autopostback上工作?

如果我删除autopostback,则rangevalidator可以正常工作。但我不需要将其删除。我希望它可以与autopostback一起使用,因为我不想在每次进行文本更改时刷新页面。

1 个答案:

答案 0 :(得分:0)

我自己发现了答案。这就是答案:

void textbox_TextChanged(object sender, EventArgs e)
{ 
        Page.Validate()
        if(Page.IsValid)
        {
           s=((TextBox)sender).Text
        }
}