2014-11-25 2 views
0

Часть этого задания, за которое я застрял, заключается в следующем: пользователь должен ввести аббревиатуру состояния в поле «Состояние» (которое является стандартным текстовым полем). Тем не менее, я должен убедиться, что символы, введенные в текстовое поле, являются допустимым аббревиатурой состояния. Поэтому я создаю массив из всех 50 состояний, а затем использовал пользовательский валидатор, чтобы принять пользовательский ввод и сравнить его со всеми 50 сокращениями состояний, используя цикл for. Тем не менее, я получаю сообщение об ошибке, которое говорит, что я не создал определение для события (stateArrayCheck), хотя я знаю, что у меня есть! У меня есть намного больше работы над этим проектом, так что это действительно расстраивает то, что вы застряли в этой части задания. Вот мой код:Использование массивов и элементов управления проверки в C# ASP.NET

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head runat="server"> 
     <title></title> 
     <script> 
      void stateArrayCheck (Object source, ServerValidateEventArgs args) 
      { 
       string[] states = new string[49]; 

       states[0] = "AL"; 
       states[1] = "AK"; 
       ... 
       states[48] = "WI"; 
       states[49] = "WY 

       for(int i=0, i <= states.count, i++) 
       { 
        if(valState.text != states[i]) 
        { 
         Response.Write("Please enter a valid US state."; 
        } 
       } 
      } 
     </script> 
     <style> 
      #name { 
       float: left; 
      } 
     </style> 
    </head> 
    <body> 
     <form id="form1" runat="server"> 
      <div id ="name"> 
       <asp:Label id="lblFirstName" Text="First Name:" AssociatedControlID="txtFirstName" Runat="server" /> 
       <asp:TextBox id="txtFirstName" Runat="server" /> 
       <asp:RequiredFieldValidator id="reqFirstName" ControlToValidate="txtFirstName" Text="(Required)" Runat="server" /> 
      </div> 
      <div> 
       <asp:Label id="lastName" text="Last Name:" runat="server" /> 
       <asp:TextBox id="txtLastName" Runat="server" /> 
       <asp:RequiredFieldValidator id="reqLastName" ControlToValidate="txtLastName" Text="(Required)"Runat="server" /> 
       <asp:Label id="city" text="City:" runat="server" /> 
       <asp:TextBox id="txtCity" Runat="server" /> 
       <asp:RequiredFieldValidator id="reqCity" ControlToValidate="txtCity" Text="(Required)" Runat="server" /> 
       <asp:Label id="state" text="State:" runat="server" /> 
       <asp:TextBox id="valState" MaxLength="2" Width="20" Runat="server" /> 
       <asp:CustomValidator id="reqState" ControlToValidate="valState" OnServerValidate="stateArrayCheck" Text="(Required)" Runat="server" /> 
      </div> 
     </form> 
    </body> 
</html> 

Я знаю, что вы не можете быть большим поклонником валидаторов. Мой учитель тоже нет, но они требуются для этого задания. Любая помощь была бы высоко оценена. Спасибо.

+2

Сценарий на стороне сервера будет идентифицирован атрибутом 'runat =" server ". Вам нужно добавить этот атрибут в тег '

+2

, пожалуйста, не форматируйте свой код так. И при отправке в Stack Overflow попробуйте быть очень четким и изолировать код проблемы вместо публикации шаблона. – DLeh

ответ

3

если это опечатка в последней строке отсутствует цитата и с запятой

states[49] = "WY 

Вы также объявить массив на 49 элементов, то назначить 50 элементов в ней.

string[] states = new string[49]; 

Вы должны заявить, что на 50 и 49 находится 50-й элемент.

string[] states = new string[50];