2010-08-25 4 views
0

Возможно, у вас есть только один form runat="server" на страницу.Две формы в ASP.NET

Моя страница имеет одну форму, где она загружается в список имен. Эта форма позволяет вам добавить новое имя в список.

Я включил событие onclick для каждого имени в списке. Когда вы нажимаете на нее, мне нужно, чтобы она загружала данные в форму редактирования (рядом с формой добавления) с кодом JavaScript; Я могу это сделать.

Но как я могу структурировать его на странице, чтобы иметь две формы?

Иллюстрация:

<table> 
    <tr> 
     <td style="width:50%;" valign="top"> 

      <form runat="server" action="productCats.aspx?action=new&mid=2"> 
       <div class="subHead">Create New Category</div> 
       <table class="settingTable"> 
        <tr> 
         <td colspan="2"><b>Category Name</b></td> 
        </tr> 
        <tr> 
         <td> 
          <asp:TextBox ID="catName" runat="server" CssClass="tbox widebox"></asp:TextBox> 
          <asp:RequiredFieldValidator runat="server" 
             id="ValidatorName" 
             ControlToValidate="catName" 
             ErrorMessage="You need to enter a category name" 
             display="Dynamic" /> 
         </td> 
        </tr> 
        <tr> 
         <td>This is the name of your category.</td> 
        </tr> 
        <tr> 
         <td colspan="2"><b>Parent Category</b></td> 
        </tr> 
        <tr> 
         <td> 
          <asp:ListBox SelectionMode="Single" Rows="8" id="parent" runat="server" CssClass="tbox widebox"> 
           <asp:ListItem Selected="True" Text="Top Level" Value="0"></asp:ListItem> 
          </asp:ListBox> 
          <asp:RequiredFieldValidator runat="server" 
             id="RequiredFieldValidator1" 
             ControlToValidate="parent" 
             ErrorMessage="You need to select a parent" 
             display="Dynamic" /> 
         </td> 
        </tr> 
        <tr> 
         <td>Choose a parent this category belongs to.</td> 
        </tr> 
       </table> 
       <asp:Button id="id" text="Create" runat="server" /> 
      </form> 
     </td> 
     <td style="width:4%;"> 
     </td> 
     <td valign="top"> 
     <div class="subHead">Modify Category</div> 

      <form id="Form1" action="productCats.aspx?action=update&mid=2"> 
       <table class="settingTable"> 
        <tr> 
         <td colspan="2"><b>Category Name</b></td> 
        </tr> 
        <tr> 
         <td> 
          <asp:TextBox ID="newCatName" runat="server" Enabled="false" CssClass="tbox widebox"></asp:TextBox> 
          <asp:RequiredFieldValidator runat="server" 
             id="RequiredFieldValidator2" 
             ControlToValidate="newCatName" 
             ErrorMessage="Enter a new category name" 
             display="Dynamic" /> 
         </td> 
        </tr> 
       </table> 
      </form> 
     </td> 
    </tr> 
</table> 

ответ

1

ASP.NET Web Forms произведение, имеющие только один <form> элемента на странице, и получить это отправило обратно на ту же страницу каждый раз, когда что-то меняется (постбэк). Попытка использовать несколько форм и указание пользовательских атрибутов action на элемент формы идет вразрез с тем, с чем предназначена среда разработки, и это никогда не очень хорошая идея.

Я бы просто попытался избавиться от второго элемента <form> и удалить атрибут action с первого <form>. Кроме того, ASP.NET будет намного счастливее, если все внутри формы, т. Е. Теги <table> в верхней части страницы.

Я не уверен, что делает вашу страницу, но если у вас есть TextBox и вы используете содержимое для добавления элементов в ListBox, более Web Forms   подобный подход будет используйте некоторый контроль, чтобы сделать обратную передачу, когда TextBox был заполнен, а затем повторно привязать ListBox к некоторому источнику данных. Возможно, используйте UpdatePanel, если вам нужна обратная передача Ajax.

Если вам удобнее JavaScript и параметры строки запроса, возможно, ASP.NET MVC лучше подходит.

0

Насколько я понял из вашего объяснения, вам нужна функциональность на этой странице, где, когда вы нажимаете на один из списков в списке, элементы в форме2 должны отображаться и изменять детали ... Я думаю, что ... использование двух панелей и onclick элемента в ListBox вы можете показать панель редактирования, а также изменение информации и другое событие, например, щелчок кнопки .. вы можете показать панель ListBox с измененными деталями.

Да, как сказал Грэм, вы можете использовать панель обновления Ajax для этого.

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