原創|其它|編輯:郝浩|2009-08-24 11:32:18.000|閱讀 639 次
概述:我們來建立一個信用卡認證控件。首先我們需要繼承Basevalidator''''s的功能。當然你可以自己寫,但那不是一個嚴格意義上的自定義控件,不是嗎?不僅如此而且會占用你的很多時間。因此使用現成的東西對我們來說更劃算。現在我們就開始吧。首先,我們建個包含我們控件功能的類文件。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
我們來建立一個信用卡認證控件。首先我們需要繼承Basevalidator''''s的功能。當然你可以自己寫,但那不是一個嚴格意義上的自定義控件,不是嗎?不僅如此而且會占用你的很多時間。因此使用現成的東西對我們來說更劃算。現在我們就開始吧。首先,我們建個包含我們控件功能的類文件。
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中定制控件了。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:IT專家網