-1

Luhn アルゴリズムを使用したクレジット カードの検証に問題があります。

私はこのC#コードを使用しています:

void ServerValidation(object source, ServerValidateEventArgs args)
    {
        // use a RequiredFieldValidator to check for an empty value
        if (CreditCardNumber.Text == string.Empty) args.IsValid = true;
        args.IsValid = IsCreditCardValid(this.CreditCardNumber.Text);
    }

   protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);            
        CreditcardValidation.ServerValidate += ServerValidation;
    }

    public bool IsCreditCardValid(string cardNumber)
    {
        const string allowed = "0123456789";
        int i;

        StringBuilder cleanNumber = new StringBuilder();
        for (i = 0; i < cardNumber.Length; i++)
        {
            if (allowed.IndexOf(cardNumber.Substring(i, 1)) >= 0)
                cleanNumber.Append(cardNumber.Substring(i, 1));
        }
        if (cleanNumber.Length < 13 || cleanNumber.Length > 16)
            return false;

        for (i = cleanNumber.Length + 1; i <= 16; i++)
            cleanNumber.Insert(0, "0");

        int multiplier, digit, sum, total = 0;
        string number = cleanNumber.ToString();

        for (i = 1; i <= 16; i++)
        {
            multiplier = 1 + (i % 2);
            digit = int.Parse(number.Substring(i - 1, 1));
            sum = digit * multiplier;
            if (sum > 9)
                sum -= 9;
            total += sum;
        }
        return (total % 10 == 0);

そしてこれはaspxで:

Creditcard number: <asp:TextBox ID="CreditCardNumber" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="CreditCardNumberReq" ControlToValidate="CreditCardNumber" ErrorMessage="Please enter a Number" runat="server" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:CustomValidator ID="CreditcardValidation"  ControlToValidate="CreditCardNumber" onservervalidate="ServerValidation" ErrorMessage="Please enter a valid Creditcard Number" runat="server" Display="Dynamic"></asp:CustomValidator>

.aspx から c# などに値を取得できないため、常にエラーが発生します。これは私が得ている特定のエラーです:

説明: このリクエストを処理するために必要なリソースのコンパイル中にエラーが発生しました。次の特定のエラーの詳細を確認し、ソース コードを適切に変更してください。

コンパイラ エラー メッセージ: CS1061: 'ASP.controls_midtermucc_ascx' には 'Server Validation' の定義が含まれていません。 using ディレクティブまたはアセンブリ参照がありませんか?)

どうすればいいですか?

4

1 に答える 1

1

サーバーメソッドを保護する必要があります。現在非公開です。aspx ページはコード ビハインド クラスから継承します。メソッドが非公開であり、保護も公開もされていない場合、サブクラスからは見えません。

したがって、この:protected void ServerValidation(object source, ServerValidateEventArgs args)

于 2013-10-14T01:15:21.390 に答える