我使用Telerik AJAX控件创建了服务器创建的表单,其中提交按钮可以发布帖子(没有点击事件)。我的表单使用的验证器工作正常,除非它们发生在字段验证错误后的下一篇文章中。
如果我将电子邮件字段设为空,则代码逻辑会捕获并返回错误。再次提交并且必需的电子邮件字段验证程序可以在代码之前捕获错误。现在放入有效数据并提交,并再次出现最后一个空字段验证器错误。第二次提交好的数据并更新。
另外,如果我生成自己的验证器错误,那么验证器工作正常。我有所需复选框的验证码。如果发生遗漏检查,我打电话
ValidatorError.Display(Page, message);
导致后续的
Page.Validate(FormEntryBase.VALIDATION_GROUP);
正确验证当前提交中的必填字段。
protected void Page_Load(object sender, EventArgs e) {
localValidationError = theForm.CustomValidateForm(Request.Form);
if (localValidationError) {
validateErrorList = form.validateErrorList;
// get local valiation error put into validation summary error list
if (validateErrorList != null) {
foreach (string message in validateErrorList) {
ValidatorError.Display(Page, message);
}
}
}
Page.Validate(FormEntryBase.VALIDATION_GROUP);
if (!Page.IsValid ) {
return;
}
代码未捕获的验证程序错误未在初始提交中捕获,该提交允许输入错误数据。
我有另一个使用click方法的网页表单,只使用Page.IsValid工作正常。
非常奇怪的行为,可能是某种生命周期问题。
答案 0 :(得分:0)
幸运的是,我通过在代码中添加点击事件找到了解决方案。要添加click事件,首先我将RadButton添加到我的表单创建代码中,可以在aspx.cs中访问。
RadButton button = new RadButton();
button.ValidateRequestMode = ValidateRequestMode.Enabled;
button.ValidationGroup = VALIDATION_GROUP;
button.UseSubmitBehavior = true;
theForm.updateButton = button;
在aspx.cs Page_Load中,我将click方法添加到按钮中。
protected void Page_Load(object sender, EventArgs e) {
...
theForm = group.GetJoinForm();
theForm.updateButton.Click += new EventHandler(UpdateButton_Click);
...
void UpdateButton_Click(object sender, EventArgs e) {
Page.Validate(FormEntryBase.VALIDATION_GROUP);
if (!Page.IsValid) {
return;
}
... most of page load code moved here
这三个步骤修复了我的验证延迟问题,现在我的所有表单都验证得很好。