Проверка кредитной карты с использованием алгоритма mod-10 в ASP.NET

Я пытаюсь применить техникум по проверке кредитных карт мод-10 Луна на пользовательском элементе проверки в asp.net. Я создал текстовое поле для ввода номеров кредитных карт, а затем использовал свойство controltovalidate, чтобы связать текстовое поле с элементом управления проверкой. Я думал, что все правильно закодировано, но когда я запускаю отладчик, ничего не происходит. Я пытался использовать точки останова, и похоже, что отладчик даже не достигает кода, который работает для проверки чего-либо. Я не совсем понимаю. Я пропускаю что-то вроде постбэка или обработчика событий? Вот код для aspx.net и C#.

//C# Code:
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
    args.IsValid = ValidateCreditCard(args.Value);
}

private bool ValidateCreditCard(string cardNumber)
{
    cardNumber = txtCreditCard.Text;
    int digitSum = 0;
    string digits = "";
    string reversedCardNumber = "";

    //removes spaces and reverse string 
    cardNumber = cardNumber.Replace(" ", null);
    for (int i = cardNumber.Length - 1; i >= 0; i--)
    {
        reversedCardNumber += cardNumber[i];
    }

    //double the digits in even-numbered positions
    for (int i = 0; i < reversedCardNumber.Length; i++)
    {
        if ((i + 1) % 2 == 0)
        {
            digits += Convert.ToInt32(reversedCardNumber.Substring(i, 1)) *2;
        }
        else
        {
            digits += reversedCardNumber.Substring(i, 1);
        }
    }

    //add the digits
    for (int i = 0; i < digits.Length; i++)
    {
        digitSum += Convert.ToInt32(digits.Substring(i, 1));
    }

    //Check that the sum is divisible by 10
    if ((digitSum % 10) == 0)
        return true;
    else
        return false;
}

Вот код ASPX.NET, который я использую для элементов управления, которые я настроил:

<asp:TextBox ID="txtCreditCard" runat="server" Width="216px"
    AutoPostBack="True">1111 1111 1111 1111</asp:TextBox>

<asp:CustomValidator ID="CustomValidator1"
    ControlToValidate="txtCreditCard" runat="server" 
    ErrorMessage="Credit Card Not Vaild"
    OnServerValidate="CustomValidator1_ServerValidate">
</asp:CustomValidator>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click"  
Text="Process" />

Обновление: этот код был исправлен, чтобы работать сейчас. Надеюсь, это поможет всем, кто сталкивается с этой проблемой.

0 ответов

Другие вопросы по тегам