2013-09-08 3 views
2

Используется PHP в течение длительного времени, но теперь я делаю сайт с ASP.NET. Я пытаюсь иметь основную регистрационную форму пользователя, но всякий раз, когда я отправляю форму, все данные показывают, что они пусты! Кроме того, метод ввода меток не работает.Объекты asp.net пусты в форме

Вот базовая форма, она находится в хранилище. Все тело в главной странице окружена в <form runat="server">

<script type="text/javascript"> 
    $(document).ready(function() { 
     //$("[id$=pick_user_type]").hide(); 

     $("[id$=UserTypeList]").click(function (e) { //second step of registration 

      $('[id$=UserTypeList] input:checked').each(function() { 

       //artist 
       if ((this.value).toLowerCase().indexOf("artist") >= 0) { 
        $('#whatinstruments').show(); 
        $('#instrumentsplayedtags').prop('disabled', false); 
       } 

       //producer 
       if ((this.value).toLowerCase().indexOf("producer") >= 0) { 
        $('#whatrecordingplatforms').show(); 
        $('#recordingplatformstags').prop('disabled', false); 
       } 
      }); 

      $('[id$=UserTypeList] input:not(:checked)').each(function() { //unchecked 
       //artist 
       if ((this.value).toLowerCase().indexOf("artist") >= 0) { 
        $('#whatinstruments').hide(); 
        $('#instrumentsplayedtags').prop('disabled', true); 
       } 

       //producer 
       if ((this.value).toLowerCase().indexOf("producer") >= 0) { 
        $('#whatrecordingplatforms').hide(); 
        $('#recordingplatformstags').prop('disabled', true); 
       } 
      }); 
     }); 

     $('#artistslikedtags').tagsInput({ //tags for listener 
      width: 'auto' 
     }); 

     $('#instrumentsplayedtags').tagsInput({ //tags for artist 
      width: 'auto' 
     }); 



     $('#recordingplatformstags').tagsInput({ //tags for producer 
      width: 'auto' 
     }); 



    }); 

    function onNextClick() { 
     //alert(Page_ClientValidate("UserInformation")); 
     //if (Page_ClientValidate("UserInformation")) { 
      $("[id$=registration_div]").hide('slide', { direction: 'left' }, 1000); 
      $("[id$=pick_user_type]").css('position', 'absolute'); 
      $("[id$=pick_user_type]").show('slide', { direction: 'right' }, 1000); 
     //} 
    } 
    function onLeftClick() { 
     //alert(Page_ClientValidate("UserInformation")); 
     //if (Page_ClientValidate("UserInformation")) { 
     $("[id$=pick_user_type]").hide('slide', { direction: 'right' }, 1000); 
     $("[id$=registration_div]").show('slide', { direction: 'left' }, 1000); 

     //} 
    } 
</script> 


<div id="registration_div"> 
    <table id="registration_table"> 
      <td> 
       <div id="registration"> 

        <table id="user_information_table"> 
         <tr> 
          <%--first name and last name--%> 
          <td> 
           <asp:TextBox ID="FirstName" runat="server" CssClass="roundedcorner"></asp:TextBox> 
           <ajaxToolkit:TextBoxWatermarkExtender ID="WatermarkFirstName" runat="server" TargetControlID="FirstName" WatermarkText="First Name" WatermarkCssClass="watermarked roundedcorner" /> 
           <asp:RequiredFieldValidator ID="FirstNameRequired" runat="server" ControlToValidate="FirstName" ErrorMessage="First Name is required." ToolTip="First Name is required." ValidationGroup="UserInformation"><font color="red">*</font></asp:RequiredFieldValidator> 

           <ajaxToolkit:TextBoxWatermarkExtender ID="WatermarkLastName" runat="server" TargetControlID="LastName" WatermarkText="Last Name" WatermarkCssClass="watermarked roundedcorner" /> 
           <asp:TextBox ID="LastName" runat="server" CssClass="roundedcorner"></asp:TextBox> 
           <asp:RequiredFieldValidator ID="LastNameRequired" runat="server" ControlToValidate="LastName" ErrorMessage="Last Name is required." ToolTip="Last Name is required." ValidationGroup="UserInformation"><font color="red">*</font></asp:RequiredFieldValidator> 
          </td> 
         </tr> 
         <tr> 
          <%--username--%> 
          <td> 
           <ajaxToolkit:TextBoxWatermarkExtender ID="WatermarkUsername" runat="server" TargetControlID="Username" WatermarkText="Username" WatermarkCssClass="watermarked roundedcorner" /> 
           <asp:TextBox ID="UserName" runat="server" CssClass="roundedcorner"></asp:TextBox> 
           <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName" ErrorMessage="User Name is required." ToolTip="User Name is required." ValidationGroup="UserInformation"><font color="red">*</font></asp:RequiredFieldValidator> 
          </td> 
         </tr> 
         <tr> 
          <%--password and confirm pass--%> 
          <td> 
           <ajaxToolkit:TextBoxWatermarkExtender ID="WatermarkPassword" runat="server" TargetControlID="Password" WatermarkText="Password" WatermarkCssClass="watermarked roundedcorner" /> 
           <asp:TextBox ID="Password" runat="server" TextMode="Password" CssClass="roundedcorner"></asp:TextBox> 
           <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password" ErrorMessage="Password is required." ToolTip="Password is required." ValidationGroup="UserInformation"><font color="red" >*</font></asp:RequiredFieldValidator> 


           <ajaxToolkit:TextBoxWatermarkExtender ID="WatermarkConfirmPassword" runat="server" TargetControlID="ConfirmPassword" WatermarkText="Confirm Password" WatermarkCssClass="watermarked roundedcorner" /> 
           <asp:TextBox ID="ConfirmPassword" runat="server" CssClass="roundedcorner" TextMode="Password"></asp:TextBox> 
           <asp:RequiredFieldValidator ID="ConfirmPasswordRequired" runat="server" ControlToValidate="ConfirmPassword" ErrorMessage="Confirm Password is required." ToolTip="Confirm Password is required." ValidationGroup="UserInformation"><font color="red">*</font></asp:RequiredFieldValidator> 

          </td> 
         </tr> 
         <%--email and confirm email--%> 
         <tr> 

          <td> 
           <ajaxToolkit:TextBoxWatermarkExtender ID="WatermarkEmail" runat="server" TargetControlID="Email" WatermarkText="Email" WatermarkCssClass="watermarked roundedcorner" /> 
           <asp:TextBox ID="Email" runat="server" Columns="48" CssClass="roundedcorner"></asp:TextBox> 
           <asp:RequiredFieldValidator ID="EmailRequired" runat="server" ControlToValidate="Email" ErrorMessage="E-mail is required." ToolTip="E-mail is required." ValidationGroup="UserInformation"><font color="red">*</font></asp:RequiredFieldValidator> 
           <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ForeColor="Red" ControlToValidate="Email" ValidationGroup="UserInformation" ErrorMessage="Invalid Email Format"></asp:RegularExpressionValidator> 
          </td> 
         </tr> 
         <tr> 
          <td> 
           <ajaxToolkit:TextBoxWatermarkExtender ID="WatermarkConfirmEmail" runat="server" TargetControlID="ConfirmEmail" WatermarkText="Confirm Email" WatermarkCssClass="watermarked roundedcorner" /> 
           <asp:TextBox ID="ConfirmEmail" runat="server" Columns="48" CssClass="roundedcorner"></asp:TextBox> 
           <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="ConfirmEmail" ErrorMessage="Confirm E-mail is required." ToolTip="Confirm E-mail is required." ValidationGroup="UserInformation"><font color="red">*</font></asp:RequiredFieldValidator> 
           <asp:RegularExpressionValidator ID="regexEmailValid" runat="server" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ForeColor="red" ControlToValidate="ConfirmEmail" ValidationGroup="UserInformation" ErrorMessage="Invalid Email Format"></asp:RegularExpressionValidator> 

          </td> 
         </tr> 
         <tr> 
          <%-- location --%> 
          <td> 
           <ajaxToolkit:TextBoxWatermarkExtender ID="WatermarkLocation" runat="server" TargetControlID="Location" WatermarkText="Location" WatermarkCssClass="watermarked roundedcorner" /> 
           <asp:TextBox ID="Location" runat="server" Columns="48" CssClass="roundedcorner"></asp:TextBox> 
           <asp:RequiredFieldValidator ID="LocationValidator" runat="server" ControlToValidate="Location" ErrorMessage="Location is required." ToolTip="Location is required." ValidationGroup="UserInformation"><font color="red">*</font></asp:RequiredFieldValidator> 

          </td> 
         </tr> 
         <tr> 
          <%-- birthdate --%> 
          <td> 
           <ajaxToolkit:TextBoxWatermarkExtender ID="WatermarkBirthdate" runat="server" TargetControlID="Birthdate" WatermarkText="Birthdate (mm/dd/yyyy)" WatermarkCssClass="watermarked roundedcorner" /> 
           <asp:TextBox ID="Birthdate" runat="server" CssClass="roundedcorner"></asp:TextBox> 
           <asp:RequiredFieldValidator ID="BirthdayRequired" runat="server" ControlToValidate="Birthdate" ErrorMessage="Birthdate is required." ToolTip="Security question is required." ValidationGroup="UserInformation"><font color="red">*</font></asp:RequiredFieldValidator> 
           <asp:CompareValidator ErrorMessage="(mm/dd/yyyy)" Display="Dynamic" ID="valcDate" ControlToValidate="Birthdate" Operator="DataTypeCheck" Type="Date" ForeColor="red" runat="server" ValidationGroup="UserInformation"></asp:CompareValidator> 
           <asp:RangeValidator ID="valrDate" runat="server" ControlToValidate="Birthdate" MinimumValue="12/31/1950" MaximumValue="1/1/2100" Type="Date" Text="Invalid Date" ForeColor="Red" Display="Dynamic" ValidationGroup="UserInformation" /> 
          </td> 
         </tr> 
         <tr> 
          <%-- gender --%> 
          <td> 
           <%--<ajaxToolkit:TextBoxWatermarkExtender ID="WatermarkGender" runat="server" TargetControlID="Gender" WatermarkText="Birthdate (mm/dd/yyyy)" WatermarkCssClass="watermarked" />--%> 
           <asp:DropDownList ID="Gender" runat="server" CssClass="roundedcorner"> 
            <asp:ListItem Value="Gender"></asp:ListItem> 
            <asp:ListItem Value="Male"></asp:ListItem> 
            <asp:ListItem Value="Female"></asp:ListItem> 
           </asp:DropDownList> 
           <asp:RequiredFieldValidator InitialValue="Gender" ID="GenderRequired" runat="server" ControlToValidate="Gender" ErrorMessage="Gender is required." ToolTip="Gender is required." ValidationGroup="UserInformation"><font color="red">*</font></asp:RequiredFieldValidator> 
          </td> 
         </tr> 

         <tr> 
          <td style="color: Red;"> 
           <asp:Literal ID="ErrorMessage" runat="server" EnableViewState="False"></asp:Literal> 
          </td> 
         </tr> 
         <tr> 
          <td> 
           <asp:CompareValidator ID="comparePasswords" runat="server" ControlToCompare="Password" ControlToValidate="ConfirmPassword" ErrorMessage="Your passwords do not match!" ForeColor="red" Display="Dynamic" ValidationGroup="UserInformation" /> 
           <asp:CompareValidator ID="EmailComparitor" runat="server" ControlToCompare="Email" ControlToValidate="ConfirmEmail" ErrorMessage="Your emails do not match!" ForeColor="Red" Display="Dynamic" ValidationGroup="UserInformation" /> 
           <br /> 
           <%--<asp:RegularExpressionValidator ID="PasswordRegExValidator" runat="server" ValidationExpression="^.*(?=.{8,35})(?=.*\d)(?=.*[a-zA-Z]).*$" ForeColor="Red" ControlToValidate="Password" ValidationGroup="UserInformation" ErrorMessage="Your Password must be at least 8 charaters long and contain at least 1 number."></asp:RegularExpressionValidator>--%> 
          </td> 

         </tr> 
        </table> 



       </div> 
      </td> 
     </tr> 
    </table> 

    <asp:ImageButton ID="NextButton" ClientIDMode="Static" runat="server" ImageUrl="images/registration/arrowright.png" 
     Height="50px" onmouseover="this.src='images/registration/arrowrightgreen.png'" onmouseout="this.src='images/registration/arrowright.png'" ValidationGroup="UserInformation" OnClientClick="onNextClick()" AutoPostBack="False" OnClick="NextButton_Click"/> 

</div> 

<%--STEP 2--%> 
<div id="pick_user_type"> 


    <asp:ImageButton ID="LeftButton" runat="server" ImageUrl="images/registration/arrowleft.png" 
     Height="50px" onmouseover="this.src='images/registration/arrowleftgreen.png'" 
     onmouseout="this.src='images/registration/arrowleft.png'" ValidationGroup="UserSelectGroup" 
     OnClientClick="onLeftClick()" AutoPostBack="False"/> 
    <h2>Almost Done! Tell us a little more information.</h2> 
    <br /> 
    <div id="pick_user_list"> 
     <strong>Check Those That Apply to Your User Experience</strong> 
     <asp:CheckBoxList ID="UserTypeList" runat="server"> 
      <asp:ListItem Selected="True" Value="Listener" Enabled="False"> Listener</asp:ListItem> 
      <asp:ListItem Value="Artist"> Artist</asp:ListItem> 
      <asp:ListItem Value="Producer"> Producer</asp:ListItem> 
      <asp:ListItem Value="Promoter"> Promoter</asp:ListItem> 
     </asp:CheckBoxList> 
     <br /> 


     <strong>What music artists do you like?</strong> 
     <input id="artistslikedtags" type="text" class="tags" value="" runat="server" /> 

     <br /> 

     <div id="whatinstruments" style="display: none"> 
      <strong>What instruments do you play?</strong> 
      <input id="instrumentsplayedtags" type="text" class="tags" value="" disabled="disabled" runat="server"/> 
     </div> 

     <br /> 

     <div id="whatrecordingplatforms" style="display: none"> 
      <strong>What recording platforms or equipment do you use?</strong> 
      <input id="recordingplatformstags" type="text" class="tags" value="" disabled="disabled" runat="server"/> 
     </div> 

     <br /> 
     <strong>What mobile platform do you use?</strong><br /> 
     <asp:DropDownList ID="MobilePlatforms" runat="server"> 
      <asp:ListItem></asp:ListItem> 
      <asp:ListItem Value="iOS">iOS (Apple)</asp:ListItem> 
      <asp:ListItem Value="Android">Android</asp:ListItem> 
      <asp:ListItem Value="Windows">Windows</asp:ListItem> 
      <asp:ListItem Value="Blackberry">Blackberry</asp:ListItem> 
     </asp:DropDownList> 
     <asp:RequiredFieldValidator InitialValue="" ID="MobilePlatformsValidator" runat="server" ControlToValidate="MobilePlatforms" ErrorMessage="This field is required." ToolTip="This field is required." ValidationGroup="UserTypeInformation" ClientIDMode="Static"><font color="red">*</font></asp:RequiredFieldValidator> 


     <div style="text-align: right"> 
      <asp:Button ID="Finish" runat="server" Text="Finish" ControlToValidate="MobilePlatforms" OnClick="FinishButton_Click" UseSubmitBehavior="False" ValidationGroup="MobilePlatforms" /> 
     </div> 
    </div> 
</div> 

Тогда за кулисами только простой метод вызова.

protected void FinishButton_Click(object sender, EventArgs e) 
{ 
      MembershipAdapter ma = new MembershipAdapter(); 
      Boolean b = ma.CreateUser(UserName.Text, Email.Text, Password.Text, FirstName.Text, LastName.Text, Gender.Text, Location.Text, Birthdate.Text, MobilePlatforms.Text, "0", "0", "0", artistslikedtags.Value); 
} 

Когда я устанавливаю точку останова на CreateUser() метод, весь текст в объектах, передаваемых с помощью метода являются пустыми строками !! У кого-нибудь есть идея, почему это может быть?

Я попытался ASP.NET AutoPostBack is clearing form data

+0

Check Request.Form, чтобы увидеть, действительно ли заполняется форма. – Jono

+0

Кроме того, у вас есть много подтверждений, вы уверены, что ваша проверка не останавливает сообщение? – Jono

ответ

2

Вы делаете что-нибудь во время Page_Load, что настройка значений текстового поля пустого? Если это так, вам нужно обернуть их с

if(!Page.IsPostback) 
{ 
    //put your initialisation code for them here 
} 

, потому что в противном случае, когда вы отправите форму, они будут очищены каждый раз.

Кроме того, unkess Я ослеп в своем старости, нет тега <form> в вышеуказанном коде?

+0

'

' находится на главной странице, так как OP сказал 'Все тело на главной странице окружено в '. –

+0

@ KarlAnderson упс, пропустил это. Хотя я знал, что есть где-то в другом месте, он не попал бы в точку останова ... –

2

Вам необходимо изучить различные этапы жизненного цикла страницы ASP.NET, так как без понимания основ этого будет очень странно, что происходит с ASP.NET.

Часы ASP.NET training for beginners : ASP.NET Page Life Cycle и обратите особое внимание на событие Page_Load, так как здесь вы, как правило, выполняете большую часть своей работы, особенно динамическое создание контента.

В Опубликованном Например, понимании того, что вы можете сделать определенные вещи в первый раз, когда страница загружается в зависимости от последующих запросов страниц (так называемых постбэк), то необходимо выполнить следующие действия в вашей странице Page_Load события:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     // Do things here that you only want to happen when the page first loads 

    } 
    else 
    { 
     // Do things here every time the page is requested, except for the first time 

    } 
}