Проверка кредитной карты с использованием алгоритма 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" />
Обновление: этот код был исправлен, чтобы работать сейчас. Надеюсь, это поможет всем, кто сталкивается с этой проблемой.