Visual Studio.Net 2005中验证控件的一个使用方法

简介:

      在Visual Studio.Net2005(FrameWork.Net2.0)中有一些很好用的验证控件,我想大家都已经很熟悉了,而且在微软的MSDN和博客园中也有不少同僚们或深或浅地讲解过这些验证控件,那么我在这里就不过多阐述这些验证控件的原理和基本使用了,我要讲解的是什么呢?请先看遇到的问题!

      这些验证控件和服务器控件(如:Button等)都有一个属性就是ValidationGroup,相信应该都很了解。

      第一种常用情况:当您放入几个验证控件和一个服务器控件,而属性ValidationGroup的值都是空值时(即不对其分组验证),点击服务器某个控件(如:Button)就会执行所有验证控件的验证。而假如这个Web页中还有一个服务器控件Button时,属性ValidationGroup值也是空值,那么这两个服务器控件Button都是执行相同的验证,如果想让这两个服务器控件Button执行不同的验证,那么就是我们第二种常用情况了。

      第二种常用情况:分组验证。【A】一个服务器Button(命名为Btn1)执行其中几个验证控件(比如有2个验证控件),【B】而另一个服务器Button(命名为Btn2)执行剩下来的几个验证控件(比如有3个验证控件),那么就需要对属性ValidationGroup进行设置:在【A】中的几个控件(服务器控件和验证控件)的ValidationGroup属性值设置为【vg1】,在【B】中的几个控件(服务器控件和验证控件)的ValidationGroup的属性设置为【vg2】,这样再分别点击两个Button就会执行不同的验证。然而再假如这个Web页中还有一个服务器控件Button(命名为Btn),我们想让这个Button执行所有验证(即执行Btn1的验证又执行Btn2的验证,共5个验证控件),此时我们该怎么办?这就是我们要讲解的内容第三种常用情况了。

      第三种常用情况:即要分组又要统一的验证。接着第二种常用情况中的假设继续叙述,如果把Btn的ValidationGroup属性设置为空值那么是否能达到期望效果呢?答案是“不能”,如果ValidationGroup属性设置为空值,那么在Web页的整个验证过程中会解释成您不希望Btn参与验证,因此此时点击Btn会直接发送页面到后台,那对ValidationGroup属性起名时用【大组.小组】等类似的方法行吗(即Btn中ValidationGroup属性值是【大组】,而Btn1和Btn2中ValidationGroup属性值分别是【大组.小组1】和【大组.小组2】)?答案依旧是“不行”。那怎么办,没有简单可行的办法了吗?当然是有的了,对,就是用JavaScript控制。下面详细介绍一下过程和使用JavaScript达到目的时应该注意的事情。

      我在期望达到第三种常用情况的效果时,也是在Google搜索、百度搜索、MSDN、CSDN和博客园中寻找了很久,不知道是网络中没有,还是大家不常用此种情况验证或者是都会使用了觉得没必要说这个(我很菜,别打我),或是我没有找到。本想找个讲解或是现成例子就不用自己研究了,看来是偷懒不得的。经过研究发现只要服务器控件Button有验证控件与其在一个组中,那么点击服务器控件Button后,先执行OnClientClick规定的JavaScript,再去执行验证操作,那么问题迎刃而解了。

     解决问题的方法及源代码:

     1、三个服务器控件Button和五个验证控件的ValidationGroup属性设置。

Btn          vg          OnClientClick属性值:Btnclick();

Btn1        vg1        OnClientClick属性值:Btn1click();

Btn2        vg2        OnClientClick属性值:Btn2click();

验证1       vg1

验证2       vg1

验证3       vg2

验证4       vg2

验证5       vg     (也可设置为空值,但不能再是vg1或vg2,注意:必须要给Btn设置一个可执行的验证控件)

      2、在Web页中增加一个<Script></Script>JS脚本。  

复制代码
 1  < script type = " text/javascript " >
 2  <!--
 3  function  Btn1click()
 4  {
 5      document.getElementById( ' <%=RequiredFieldValidator1.ClientID %> ' ).validationGroup  =   ' vg1 ' ;
 6      document.getElementById( ' <%=RegularExpressionValidator1.ClientID %> ' ).validationGroup  =   ' vg1 ' ;
 7  }
 8 
 9  function  Btn2click()
10  {
11      document.getElementById( ' <%=RequiredFieldValidator2.ClientID %> ' ).validationGroup  =   ' vg2 ' ;
12      document.getElementById( ' <%=RegularExpressionValidator2.ClientID %> ' ).validationGroup  =   ' vg2 ' ;
13      document.getElementById( ' <%=RegularExpressionValidator3.ClientID %> ' ).validationGroup  =   ' vg2 ' ;
14  }
15 
16  function  Btnclick()
17  {
18      document.getElementById( ' <%=RequiredFieldValidator1.ClientID %> ' ).validationGroup  =   ' vg ' ;
19      document.getElementById( ' <%=RegularExpressionValidator1.ClientID %> ' ).validationGroup  =   ' vg ' ;
20      document.getElementById( ' <%=RequiredFieldValidator2.ClientID %> ' ).validationGroup  =   ' vg ' ;
21      document.getElementById( ' <%=RegularExpressionValidator2.ClientID %> ' ).validationGroup  =   ' vg ' ;
22      document.getElementById( ' <%=RegularExpressionValidator3.ClientID %> ' ).validationGroup  =   ' vg ' ;
23 
24  //  -->
25  < / script>
复制代码

      这样我们就能达到我们期望的即要分组又要统一的验证。但这里需要注意的就是:每个参与验证的服务器控件Button在没有写任何JavaScript代码都必须分配至少一个验证控件能让其执行,否则您就算写了控制验证控件的JavaScript代码,这个服务器控件也不验证,切记,切记!!!


本文转自刚刚博客园博客,原文链接:http://www.cnblogs.com/lijigang/archive/2008/11/26/1341666.html,如需转载请自行联系原作者

相关文章
|
5月前
|
存储 JSON 开发工具
Visual Studio编程效率提升技巧集(提高.NET编程效率)
Visual Studio编程效率提升技巧集(提高.NET编程效率)
Visual Studio编程效率提升技巧集(提高.NET编程效率)
|
4月前
|
开发框架 JavaScript 前端开发
震撼!破解 ASP.NET 服务器控件 Button 执行顺序之谜,颠覆你的开发认知!
【8月更文挑战第16天】在ASP.NET开发中,通过Button控件实现先执行JavaScript再触后台处理的需求十分常见。例如,在用户点击按钮前需前端验证或提示,确保操作无误后再传递数据至后台深度处理。此过程可通过设置Button的`OnClientClick`属性调用自定义JavaScript函数完成验证;若验证通过,则继续触发后台事件。此外,结合jQuery也能达到相同效果,利用`__doPostBack`手动触发服务器端事件。这种方式增强了应用的交互性和用户体验。
48 8
|
14天前
Visual Studio 快速分析 .NET Dump 文件
【11月更文挑战第10天】.NET Dump 文件是在 .NET 应用程序崩溃或出现问题时生成的,记录了应用程序的状态,包括内存对象、线程栈和模块信息。通过分析这些文件,开发人员可以定位和解决内存泄漏、死锁等问题。在 Visual Studio 中,可以通过调试工具、内存分析工具和符号加载等功能来详细分析 Dump 文件。此外,还可以使用第三方工具如 WinDbg 进行更深入的分析。
|
5月前
|
存储 运维
使用Visual Studio分析.NET Dump
使用Visual Studio分析.NET Dump
|
2月前
|
开发者 Windows
.NET 开源扁平化、美观的 C/S 控件库
【10月更文挑战第23天】介绍了三款适用于 .NET 平台的开源扁平化、美观的 C/S 控件库:MaterialSkin 采用 Google Material Design 风格,适合现代感界面;Krypton Toolkit 提供丰富控件,界面易于定制;Fluent Ribbon Control Suite 模仿 Office 界面,适合复杂功能应用。每款控件库均附有示例代码及 GitHub 链接。
|
7月前
|
开发框架 前端开发 JavaScript
ASP.NET AJAX使用方法概述(三)
ASP.NET AJAX使用方法概述(三)
51 1
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
本文讨论了在基于.NET 6和.NET Framework的WinForms项目中添加图表控件的不同方法。由于.NET 6的WinForms项目默认不包含Chart控件,可以通过NuGet包管理器安装如ScottPlot等图表插件。而对于基于.NET Framework的WinForms项目,Chart控件是默认存在的,也可以通过NuGet安装额外的图表插件,例如LiveCharts。文中提供了通过NuGet添加图表控件的步骤和截图说明。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
|
2月前
|
C# Android开发 iOS开发
一组.NET MAUI绘制的开源控件 - AlohaKit
一组.NET MAUI绘制的开源控件 - AlohaKit
|
3月前
|
开发框架 JavaScript 前端开发
|
4月前
|
网络安全 C++
【Azure Developer】Visual Studio 2019中如何修改.Net Core应用通过IIS Express Host的应用端口(SSL/非SSL)
【Azure Developer】Visual Studio 2019中如何修改.Net Core应用通过IIS Express Host的应用端口(SSL/非SSL)