我正在从包含复选框的代码创建表单,并且没有验证器可以确保复选框本身被检查,如存在和比较验证器可以。复选框需要使用自定义验证器,这对我来说不起作用,因为复选框ID是任意的,并且可以有任意数量的复选框,其中任何数字都需要检查。我可以获得一个自定义验证器来调用服务器函数但它不知道也不能引用字段复选框数据,因为一切都是动态完成的。 HTML页面只是一个div,我也添加了生成的代码。
我通过阅读发布的表单数据来管理表单中的数据。为了使所有内容复杂化,未选中的复选框不会在表单数据中放置值,因此我必须检查其不存在以确定它未被检查。除了验证状态之外,我所有这些工作正常。我知道哪些复选框无效,我已将自己的验证消息添加到表单中,并更新了验证摘要。基本上一切都是书面和工作的。
问题 - 我真的想将Page.IsValid设置为false并使页面正式无效,我自己的自定义代码验证是页面上正确行为的验证器。我应该把它搞砸,然后通过我的验证标记返回页面吗?
谢谢, 乔治
答案 0 :(得分:0)
我在网上发现了一些有帮助的东西。
为您自己的验证员制作课程。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
namespace YourNameSpace
{
public class ValidatorError : IValidator
{
private ValidatorError(string message)
{
ErrorMessage = message;
IsValid = false;
}
public string ErrorMessage { get; set; }
public bool IsValid { get; set; }
public string ValidationGroup { get; set; }
public static void Display(Page currentPage, string message)
{
currentPage.Validators.Add(new ValidatorError(message));
}
}
}

在验证呼叫之前的Page_Load中。
bool localValidationError = false;
public List<string> validateErrorList = null;
// localValidationError and the validateErrorList are set in some parsing code in Page_Init()
if (localValidationError && validateErrorList != null) {
foreach (string message in validateErrorList) {
ValidatorError.Display(Page, message);
}
}
Page.Validate();
&#13;
我的验证员在一个验证器组中无法工作,我不得不删除该组。所有这些都可以设置Page,Valid,并且大多数时候都会填充页面ValidationSummary。当列表较长时,ValidatorError错误不会出现,但是当它更短时,它们会显示错误。我认为它足够好。
乔治