ASP.NET手动触发页面验证控件事件

2024-09-07 13:18

本文主要是介绍ASP.NET手动触发页面验证控件事件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开发环境:.NET Framework 3.5.1 sp1

参考文章http://www.codeproject.com/KB/aspnet/JavascriptValidation.aspx

http://msdn.microsoft.com/zh-cn/library/aa479045.aspx

http://www.cnblogs.com/minsentinel/archive/2008/03/21/1116502.html

 

 

http://www.cnblogs.com/slyzly/articles/2473983.html

  我们在用Web Form开发的的时候,有时候可能需要在客户端用JavaScript来触发Validator验证控件的验证来检查输入的正确性。

   比如有个在弹出窗口中预览编辑中的内容的功能,在预览之前需要对编辑中的内容进行输入检查。如果输入检查是通过Validator控件的客户端验证来实现的,

   这里就涉及到怎样在不进行submit的情况下用JavaScript来触发Validator验证。

     我们知道在通过aspx生成的html代码中,会有很多框架自动添加的内嵌资源(web source)文件引用和代码。对于Validator控件的验证代码就藏在其中。

从页面的源文件中下载WebResource.axd这个文件可以看到js验证的源码.

操作:用IE打开网页,保存网页,选择保存类型为"网页,全部"

image

就可以看到保存下来的文件:

image 这两个差不多就是验证的所有源码了.

 

 

   通过Debug跟踪有幸找到了源代码,发现起关键作用的是以下2个JavaScript方法:

1 Page_ClientValidate(validationGroup)
返回值是布尔值(true:验证通过, false:验证失败)。

2 ValidatorValidate(val, validationGroup, event)
无返回值,无法判断验证是否通过。调用Validator的验证并更新其表示形式以及验证失败时聚焦控件等

   其实在Page_ClientValidate里会调用ValidatorValidate来调用Validator的验证和并根据display属性的值(None, Static, Dynamic)来调整Validator的表示形式。

一, Page_ClientValidate方法

        参数为ValidationGroup属性的值。没有指定参数的情况下表示触发页面所有的Validator控件。

<script type="text/javascript">function preview() {// 输入验证 if (!Page_ClientValidate("Detail")) {return;}// 验证成功后的处理......} </script>

   如果没有使用ValidationSummary控件,而且不关心验证成功与否的后续处理。那可以使用ValidatorValidate方法

 

***

问题:

一.同时验证全部验证组:

a)客户端解决

1.

val res1=Page_ClientValidate("Detail") ;

val res2=Page_ClientValidate("BBB");

2.

if (!Page_ClientValidate("Detail") || !Page_ClientValidate("BBB")) {
return;
}

以上两种写法,只有当Detail验证通过的时候,才会进行验证BBB,没有办法页面上同时进行验证两个及以上.

可以用Page_ClientValidate()来验证多个验证组的.

if (!Page_ClientValidate()) {
      return;
}


Page_ClientValidate说明:

Page_ClientValidate():验证所有的控件(有设置验证组和没有验证组的都进行验证).

Page_ClientValidate(""):验证没有设置验证组的控件.

Page_ClientValidate("PP"):验证验证组为PP的控件.

 

b)服务器端解决

Page.Validate();//验证所有的控件

if (!Page.IsValid)
{
                 return;
}

 

Page.Validate说明:

Page.Validate():验证所有的控件(有设置验证组和没有验证组的都进行验证).

Page.Validate(""):验证没有设置验证组的控件.

Page.Validate("PP"):验证验证组为PP的控件.

 

 

二.验证自定义的验证组.

(参考 http://blog.163.com/xiao_mege/blog/static/729427532010112845924555/ )

 

添加两个JS function:

function ValidatePage(validationGroups)

{

var list = validationGroups.split('&');

for (var i = 0; i < Page_Validators.length; i++)

    {

             var validator = Page_Validators[i];

if ((validator.validationGroup && ExistsGroup(list, validator.validationGroup))

            || (!validator.validationGroup && ExistsGroup(list, '')))

        {

            ValidatorValidate(validator, validator.validationGroup);

            Page_IsValid = Page_IsValid && validator.isvalid;

        }

else

        {

            validator.isvalid = true;

            ValidatorUpdateDisplay(validator);

        }

    }

//ValidationSummary

for (var i = 0; i < list.length; i++)

    {

        ValidationSummaryOnSubmit(list[i]);

    }

    Page_BlockSubmit = !Page_IsValid;

    return Page_IsValid;

}

function ExistsGroup(list, group)

{

var found = false;

for (i = 0; i < list.length; i++)

    {

if (list[i] == group)

        {

            found = true;

            break;

        }

    }

     return found;

}

 

调用:

<asp:Button ID="ibtnSave" runat="server" OnClientClick="return AAA()" />

function AAA()

{

      if(ValidatePage("&Group1&Group2"))// 验证 没有设置的验证组,Group1,Group2(没有设置验证组的设置为空就可以了)

      {

               return true;

      }

      return false;

}

 

***

 

 

二, ValidatorValidate方法

        参数: var                    要触发的Validator控件对象

validationGroup  ValidationGroup属性的值

event                验证对象ID(用于聚焦。需要focusOnError=“true”的情况下才有用)

例子程序可以参考这里

 

引用:http://www.cnblogs.com/ouryou/articles/1704866.html

这篇关于ASP.NET手动触发页面验证控件事件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145159

相关文章

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

Qt中QGroupBox控件的实现

《Qt中QGroupBox控件的实现》QGroupBox是Qt框架中一个非常有用的控件,它主要用于组织和管理一组相关的控件,本文主要介绍了Qt中QGroupBox控件的实现,具有一定的参考价值,感兴趣... 目录引言一、基本属性二、常用方法2.1 构造函数 2.2 设置标题2.3 设置复选框模式2.4 是否

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D

如何关闭 Mac 触发角功能或设置修饰键? mac电脑防止误触设置技巧

《如何关闭Mac触发角功能或设置修饰键?mac电脑防止误触设置技巧》从Windows换到iOS大半年来,触发角是我觉得值得吹爆的MacBook效率神器,成为一大说服理由,下面我们就来看看mac电... MAC 的「触发角」功能虽然提高了效率,但过于灵敏也让不少用户感到头疼。特别是在关键时刻,一不小心就可能触

Flutter监听当前页面可见与隐藏状态的代码详解

《Flutter监听当前页面可见与隐藏状态的代码详解》文章介绍了如何在Flutter中使用路由观察者来监听应用进入前台或后台状态以及页面的显示和隐藏,并通过代码示例讲解的非常详细,需要的朋友可以参考下... flutter 可以监听 app 进入前台还是后台状态,也可以监听当http://www.cppcn

spring @EventListener 事件与监听的示例详解

《spring@EventListener事件与监听的示例详解》本文介绍了自定义Spring事件和监听器的方法,包括如何发布事件、监听事件以及如何处理异步事件,通过示例代码和日志,展示了事件的顺序... 目录1、自定义Application Event2、自定义监听3、测试4、源代码5、其他5.1 顺序执行

基于.NET编写工具类解决JSON乱码问题

《基于.NET编写工具类解决JSON乱码问题》在开发过程中,我们经常会遇到JSON数据处理的问题,尤其是在数据传输和解析过程中,很容易出现编码错误导致的乱码问题,下面我们就来编写一个.NET工具类来解... 目录问题背景核心原理工具类实现使用示例总结在开发过程中,我们经常会遇到jsON数据处理的问题,尤其是