1: using System; 2: using System.Web.UI; 3: using System.Web.UI.WebControls; 4: 5: namespace CustomValidators 6: { 7: /// 8: /// Summary description for Class1. 9: /// 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编码教程:如何实现/使用缓存
[ASP]2015年4月15日ASP编码教程:asp缓存的分类
[ASP]2015年4月15日ASP编码教程:何谓ASP缓存/为什么要缓存
[ASP]2015年4月15日ASP编码教程:asp实现的sha1加密解密代码
[ASP]2015年4月15日ASP编码教程:asp执行带参数的sql语句实例
[ASP]2015年4月14日