2013-10-13 3 views
-1

У меня проблема с использованием алгоритма Луна для проверки кредитных карт.Невозможно использовать алгоритм Луна для проверки кредитных карт

Я использую это в 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 = ""; 
     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» не содержит определения для «Проверка сервера», и не было обнаружено никакого метода расширения «Проверка сервера», который принимает первый аргумент типа «ASP.controls_midtermucc_ascx» '(вам не хватает директивы по использованию или ссылки на сборку?)

Что мне нужно делать?

+1

Какая ошибка вы получаете? Мы не можем помочь, если вы заставите нас угадать ошибку. –

+0

это говорит что-то вроде: 'Описание: Ошибка компиляции ресурса, необходимого для обслуживания этого запроса. Проверьте следующие конкретные сведения об ошибках и соответствующим образом измените исходный код. Сообщение об ошибке компилятора: CS1061: «ASP.controls_midtermucc_ascx» не содержит определения для «Проверка сервера», и не было обнаружено никакого метода расширения «Проверка сервера», который принимает первый аргумент типа «ASP.controls_midtermucc_ascx» (вам не хватает директивы использования или ссылки на сборку?). – user2157063

ответ

1

Вам необходимо защитить ваш сервер. В настоящее время он закрыт. Страница aspx наследуется от вашего кода за классом. Если метод является приватным, не защищенным или открытым, он не отображается подклассам.

Так вот: protected void ServerValidation(object source, ServerValidateEventArgs args)

+0

спасибо, что это было :) – user2157063

Смежные вопросы