Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 查找失败的验证程序asp.net_C#_Asp.net_Validation_Logging - Fatal编程技术网

C# 查找失败的验证程序asp.net

C# 查找失败的验证程序asp.net,c#,asp.net,validation,logging,C#,Asp.net,Validation,Logging,我有一个页面,我想在其中记录用户未能满足相关字段要求的每个验证消息 问题是我的回发/按钮点击从未发生(可能是因为客户端验证),因此在用户真正正确获取每个字段之前,日志记录从未发生(没有验证错误) 按钮单击事件方法: protected void btnNext_Click(object sender, EventArgs e) { Page.Validate(); if(Page.IsValid) { //code } else {

我有一个页面,我想在其中记录用户未能满足相关字段要求的每个验证消息

问题是我的回发/按钮点击从未发生(可能是因为客户端验证),因此在用户真正正确获取每个字段之前,日志记录从未发生(没有验证错误)

按钮单击事件方法:

protected void btnNext_Click(object sender, EventArgs e)
{
    Page.Validate();
    if(Page.IsValid)
    {
        //code
    }
    else
    {
        foreach (IValidator validator in Validators)
        {
            if (!validator.IsValid)
            {
                PageValidatorErrors error = new PageValidatorErrors
                              {
                                  WebsiteID = AppState.WebsiteID,
                                  Page = Request.Url.AbsolutePath,
                                  URL = Request.Url.ToString(),
                                  UserIP = Tools.GetIP(),
                                  ErrorMessage = validator.ErrorMessage,
                                  CreatedDate = DateTime.Now
                               };
                pageValidatorErrorsRep.insert(error);
            }
        }
    }
}
有什么想法吗?我如何记录这些信息

编辑:

<script type="text/javascript">
    function validatePage()
    {
        if (window.Page_IsValid != true)
        {
            //Page_Validators is an array of validation controls in the page. 
            if (window.Page_Validators != undefined && window.Page_Validators != null)
            {
                //Looping through the whole validation collection. 
                for (var i = 0; i < window.Page_Validators.length; i++)
                {
                    window.ValidatorEnable(window.Page_Validators[i]);

                    //if condition to check whether the validation was successfull or not. 
                    if (!window.Page_Validators[i].isvalid)
                    {
                        var errMsg = window.Page_Validators[i].getAttribute('ErrorMessage');
                        alert(errMsg);
                    }
                }
            }
        }
    }
</script>

函数validatePage()
{
如果(window.Page_是有效的!=true)
{
//Page_Validators是页面中的一组验证控件。
if(window.Page\u Validators!=未定义&&window.Page\u Validators!=空)
{
//在整个验证集合中循环。
对于(var i=0;i
尝试将所有验证器上的EnableClientScript属性更改为false。您的所有验证将只在服务器端进行。

这是解决方案的一部分,您可以通过调用客户端来获得validates/true-false:


哦,我明白了,你在问如何连接到asp.net验证器发出的客户端javascript。感谢验证器循环示例,我正要自己编写:)是的,这使得回发工作正常,但是当你键入或单击下一个字段时,字段上带有验证的功能已经消失了。如果可能的话,我想保留这个。我想这可能是最好的选择。摆脱页面验证程序,在服务器端完成所有工作。这样你就可以更好地控制日志内容。这可能是个诀窍,你知道我是如何得到“失败”的验证器的,或者我可以调用C#方法吗?这里是验证器使用的JS库的MSDN文档链接,从我的简短阅读中,你没有太多可以使用的:谢谢,我现在能够循环验证程序,并在其无效时发出警报。现在只需要提取错误消息,由于某些原因,每个验证器的错误消息都为null。我已将javascript添加到主题中。
function performCheck()
{

if(Page_ClientValidate())
{

//Do something to log true/ false
}

}