2010-08-25 112 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>元素,并从第一个<form>中删除action属性。此外,如果所有内容都在表单内,即ASP.NET页面顶部的<table>标签,ASP.NET将会更加快乐。

我不知道你的网页是干什么的,但如果你已经有了一个TextBox和你使用了这样的内容项添加到ListBox,更加以网络 窗体类的方法是当TextBox已被填写时,使用一些控件进行回发,然后将ListBox重新绑定到某种数据源。如果您想要Ajax回发,也许使用UpdatePanel

如果你更熟悉JavaScript和查询字符串参数,也许ASP.NET MVC会更适合。

0

通过我的理解你的解释,你需要一个功能在你的这个页面上,当你点击列表中的一个listitem时,form2中的元素需要显示并修改细节......我认为是...使用两个面板和onclick ListBox中的项目,您可以显示编辑面板和更改细节和其他事件,如按钮单击..您可以显示列表框面板更改的细节。

是的,因为格雷厄姆已经提到你可以使用Ajax更新面板来实现这一点。