【问题标题】:Find failed validators asp.net查找失败的验证器 asp.net
【发布时间】:2012-11-14 16:23:31
【问题描述】:

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

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

按钮点击事件方法:

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>

【问题讨论】:

  • 哦,我明白了,您在问如何挂钩到 asp.net 验证器发出的客户端 JavaScript。
  • 感谢验证器循环示例,我正要自己编写它:)

标签: c# asp.net validation logging


【解决方案1】:

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

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

function performCheck()
{

if(Page_ClientValidate())
{

//Do something to log true/ false
}

}

【讨论】:

  • 这可能是诀窍,你知道我是如何得到“失败”的验证器的吗?或者我可以以某种方式调用 C# 方法吗?
  • 这里是验证器使用的 JS 库的 MSDN 文档的链接,根据我的简短阅读,您没有太多可使用的:msdn.microsoft.com/en-us/library/aa338815(v=vs.71).aspx
  • 谢谢,我现在可以遍历验证器并在验证器无效时发出警报。现在只需要提取错误消息,由于某种原因,它对于每个验证器都是空的。我已将 javascript 添加到主题中。
【解决方案2】:

尝试将所有验证器上的 EnableClientScript 属性更改为 false。您的所有验证都将仅在服务器端进行。

【讨论】:

  • 是的,这使得回发工作正常,但是在您键入或单击下一个字段时对字段进行验证的功能已经失效。如果可能的话,我想保留这个。
  • 我认为这可能是最好的选择。摆脱页面验证器并在服务器端完成所有工作。这样您就可以更好地控制要记录的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-23
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 2010-11-24
  • 2019-05-27
相关资源
最近更新 更多