ASP.net实现信用卡检查和自定义确认控件(二)

原创 2003年03月06日 09:11:00

 

欢迎来到第二部分.在写完前一部分之后我意识到如果把这些代码更模块化对你将会更有帮助.我说模块化意思是:不用每次应用都要拷贝,粘贴相同的代码.更简单 的方案是建一个继承了.net服务端控件功能的自定义控件.这不仅可使我们定制一些我们想做的事件,而且利用了被继承控件里已有的强大的功能.

我们来建立一个信用卡认证控件.首先我们需要继承Basevalidator's的功能.当然你可以自己写,但那不是一个严格意义上的自定义控件,不是吗?不仅如此而且会 占用你的很多时间.因此使用现成的东西对我们来说更划算.现在我们就开始吧. 首先,我们建个包含我们控件功能的类文件.


1:     using System;
2: using System.Web.UI;
3: using System.Web.UI.WebControls;
4:
5: namespace CustomValidators
6: {
7: /// <summary>
8: /// Summary description for Class1.
9: /// </summary>
10:
11: //-- 从 BaseValidator 类继承过来, 从而可以基类的一些功能.
12: public class CreditCardValidator : BaseValidator
13: {
14: protected override bool EvaluateIsValid()
15: {
16: //-- 把validation 控件的 controltovalidate 值赋给valueToValidate.
17: string valueToValidate = this.GetControlValidationValue(this.ControlToValidate);
18: int indicator = 1; //-- 每隔一位数的标记
19: int firstNumToAdd = 0; //-- 用来储存第一组数字的和
20: int secondNumToAdd = 0; //-- 用来储存第二组数字的和
21: string num1; //-- 用于当每隔一位数相加的和大于10时,储存最左边的整数
22:
23: string num2; //-- 用于当每隔一位数相加的和大于10时,储存最右边的整数
24:
25:
26: //-- 把信用卡号字符串转换为一个字符数组
27: char[] ccArr = valueToValidate.ToCharArray();
28:
29: for (int i=ccArr.Length-1;i>=0;i--)
30: {
31: char ccNoAdd = ccArr[i];
32: int ccAdd = Int32.Parse(ccNoAdd.ToString());
33: if (indicator == 1)
34: {
35: //-- 当我们碰到奇数位时,将它加入到总值里
36: firstNumToAdd += ccAdd;
37: //-- 将标记设为0,使下一次循环跳过此程序段
38: indicator = 0;
39: }
40: else
41: {
42: //-- 如果当前整数乘以2之后大于10,就将和分为两个整数并将它们相加,
43: //-- 相加的值再加到总值里.
44:
45: if ((ccAdd + ccAdd) >= 10)
46: {
47: int temporary = (ccAdd + ccAdd);
48: num1 = temporary.ToString().Substring(0,1);
49: num2 = temporary.ToString().Substring(1,1);
50: secondNumToAdd += (Convert.ToInt32(num1) + Convert.ToInt32(num2));
51: }
52: else
53: {
54: //-- 否则,将它们相加,相加的值再加到总值里.
55: secondNumToAdd += ccAdd + ccAdd;
56: }
57: //-- //-- 将标记设为1,我们就能对下一个整数执行不同的代码
58:
59: indicator = 1;
60: }
61: }
62: //-- 如果两个数的和被10整除,那么卡是有效的,否则,无效.
63:
64: bool isValid = false;
65: if ((firstNumToAdd + secondNumToAdd) % 10 == 0)
66: {
67: isValid = true;
68: }
69: else
70: {
71: isValid = false;
72: }
73: return isValid;
74: }
75: }
76: }
77:


接下来,将它保存为Validator.cs 在你的项目文件夹里.现在,为了能使用它,我们把它编译成dll.做这些你可以建一个批处理文件(.bat),也可以打开windows命令行输入以下字符:

csc /target:library /out:c:/inetpub/wwwroot/bin/Validator.dll *.cs /r:System.dll,System.Web.dll

有了dll文件你就可能使用这个控件了.随便打开一个你喜欢的编辑器,输入以下代码:

  


1:     <%@ Register TagPrefix="custom" Namespace="CustomValidators" Assembly="Validator" %>
2:
3: <html>
4: <body>
5: <form runat="server">
6: <asp:TextBox ID="CCNumber" Runat="server" />
7: <custom:CreditCardValidator
8: ControlToValidate="CCNumber"
9: Runat="server"
10: ErrorMessage="Credit Card Number Invalid!" />
11: <asp:Button Text="Validate" Runat="server" />
12: </form>
13: </body>
14: </html>


  保存并访问此页,输入一个测试的信用卡号码,好了,你现在已明白如何在ASP.NET中定制控件了.  

ASP.NET实现微信功能(1)(创建菜单,验证,给菜单添加事件)

LZ实在 不知道怎么起名字了,索性就取了这个名字,开始吧,说实在的,想给自己的平常的学习做一个总结,总是忘了总结。也只能给工作做一个总结了。 我打算用2篇文章来写,第一篇是关于订阅号的,就是这个...
  • chun8416
  • chun8416
  • 2015年05月24日 19:31
  • 1685

asp.net WebForm之用户自定义控件

关于用户自定义控件,想必大家已经非常熟悉了。虽然说经常用过,但是只是简单的使用而已。在这里再次总结一下Asp.net中的UserControl,以便下次使用时 能够得心应手。本文将会介绍以下内容...
  • ydm19891101
  • ydm19891101
  • 2016年05月11日 09:45
  • 2656

asp.net向自定义控件传递参数-两个例子

在控件.ascx.cs声明控件属性           private int _ClassID = 0;           public int ClassID           {  ...
  • lishimin1012
  • lishimin1012
  • 2014年06月27日 21:14
  • 4853

ASP.NET自定义控件开发示例(二)

 接着上次的内容。接下来我们让它的时间能不停走动。新建一个类TipTime3,新建脚本文件TipTime3.js,将TipTime2代码都复制过来。 为了能将C#的DateTime对象转换为...
  • killcwd
  • killcwd
  • 2014年06月12日 15:29
  • 426

实现一个Asp.net自定义Back控件

  • 2009年06月25日 22:06
  • 6KB
  • 下载

ASP.NET自定义控件开发(个人总结)

1、创建自定义控件有两种方式: 1) 在WEB项目中的App_Code文件下创建自定义控件; 2)添加单独的自定义控件类库项目,并创建自定义控件。 其中,自定义控件类继承自Syste...
  • BeBass
  • BeBass
  • 2013年06月13日 15:41
  • 555

ASP.NET总结——Web自定义控件

北大青鸟ASP.NET的视频,向我们介绍了用户控件和自定义控件。        先简单说一下这两者的明显的区别。 用户控件的扩展名为.aspx;自定义控件的扩展名为.dll。用户控件使用时,需...
  • u010924834
  • u010924834
  • 2014年09月15日 15:58
  • 2071

asp.net自定义控件开发使用HtmlTextWriter类输出

public partial class WebUserControl1 : System.Web.UI.UserControl     {         protected void Page...
  • dn199062
  • dn199062
  • 2012年08月16日 15:18
  • 739

ASP.NET 部署和使用自定义 Web 服务器控件

本演练演示如何创建和测试自定义 ASP.NET Web 服务器控件。 在本演练中,您将学会如何执行以下任务: 创建一个 ASP.NET Web 服务器控件。 通过向该控件添加元数据来...
  • qq285679784
  • qq285679784
  • 2017年06月16日 09:39
  • 928

ASP.NET 自定义服务器控件

文章内容  本文通过创建一个最简单的服务器控件,演示开发服务器端控件的流程。  文章内容整理自MSDN的编程指南,原文地址在文章末尾的资源中。 本文创建一个简单的服务器控件,名为 R...
  • qq285679784
  • qq285679784
  • 2017年06月16日 10:29
  • 504
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.net实现信用卡检查和自定义确认控件(二)
举报原因:
原因补充:

(最多只允许输入30个字)