2012-11-14 26 views
8

我有一个页面,我想记录用户未能满足相关字段要求的每条验证消息。查找失败的验证器asp.net

问题是我的回发/按钮点击永远不会发生(也许是因为客户端验证),因此记录从未发生之前,用户实际得到了各个领域的权利(无验证错误)。

按钮点击事件方法:

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); 
      } 
     } 
    } 
} 

任何想法,我怎么可以登录theese消息?

编辑:

<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> 
+0

哦,我明白了,你是问如何连接到客户端asp.net验证器发出的端JavaScript。 – MatthewMartin

+0

感谢您的验证环路样本,我正要去写我自己的:) – rdmptn

回答

3

这里是解决方案的一部分,你可以通过调用它的客户端得到生效/真假:

http://razeeb.wordpress.com/2009/01/11/calling-aspnet-validators-from-javascript/

function performCheck() 
{ 

if(Page_ClientValidate()) 
{ 

//Do something to log true/ false 
} 

} 
+0

这可能是诀窍,你知道我是如何得到“失败”的验证器,或者我可以以某种方式调用C#方法吗? – KLIM8D

+0

下面是验证器使用的JS库的MSDN文档的链接,从我的简短阅读中,您没有太多工作要做:http://msdn.microsoft.com/en-us/library/ aa338815(v = vs.71).aspx – MatthewMartin

+0

谢谢,我现在可以循环验证器并在其无效时发出警报。现在只需要提取错误消息,出于某种原因,每个验证器都是空的。 我已将javascript添加到主题中。 – KLIM8D

2

试图改变所有验证为false EnableClientScript属性。你所有的验证只会在服务器端发生。

+0

是的,这使得回发工作,如何随着您键入或点击下一个领域的字段验证功能已经不存在了。如果可能,我想保留这一点。 – KLIM8D

+0

我认为这可能是最好的选择。摆脱页面验证器,并做到所有服务器端。这样你就可以更好地控制记录什么。 – NotMe