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