0

form runat="server"显然,每页只能有一个。

我的页面有一个表单,它加载到名称列表中。此表单还允许您将新名称添加到列表中。

我已将 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>
4

2 回答 2

1

ASP.NET Web 窗体的工作原理是在页面上只有一个<form>元素,并在每次发生变化(回发)时将其回发到同一页面。尝试使用多个表单并action在表单元素上指定自定义属性与框架的设计目的背道而驰,这绝不是一个好主意。

我只想尝试摆脱第二个<form>元素,并从第一个元素中删除该action属性<form><table>此外,如果所有内容都在表单内,即您的标签位于页面顶部,ASP.NET 将会更快乐。

我不确定您的页面在做什么,但是如果您有 aTextBox并且您正在使用它的内容将项目添加到 a ListBox,则更类似于 Web 窗体的方法是使用一些控件来执行回发填好后TextBox,再重新绑定ListBox到某种数据源。UpdatePanel如果您想要 Ajax 回发,也许可以使用。

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

于 2010-08-25T09:08:21.583 回答
0

根据我从您的解释中了解到,您希望在您的此页面上有一个功能,当您单击列表中的一个列表项时,需要显示 form2 中的元素并修改详细信息......我认为是...使用两个面板并单击 ListBox 中的项目,您可以显示编辑面板和更改详细信息以及其他一些事件,例如按钮单击 .. 您可以显示更改后的详细信息的列表框面板。

是的,正如 Graham 所提到的,您可以使用 Ajax 更新面板来完成此操作。

于 2013-02-08T17:59:21.033 回答