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

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 raozr 的 blog

 

欢迎来到第二部分.在写完前一部分之后我意识到如果把这些代码更模块化对你将会更有帮助.我说模块化意思是:不用每次应用都要拷贝,粘贴相同的代码.更简单 的方案是建一个继承了.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:


本文关键:C#, asp.net , 自定义确认控件
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top