簡體   English   中英

ASP.NET中的兩種形式

[英]Two forms in ASP.NET

顯然,每頁只能有一種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>

ASP.NET Web窗體的工作方式是,在頁面上僅包含一個<form>元素,並在每次發生更改(回發)時將其發布回同一頁面。 嘗試使用多種形式,並在form元素上指定自定義action屬性與框架設計使用的內容背道而馳,這絕不是一個好主意。

我將嘗試擺脫第二個<form>元素,並從第一個<form>移除action屬性。 同樣,如果所有內容都在表單內,即頁面頂部的<table>標記內,則ASP.NET將更加快樂。

我不確定您的頁面在做什么,但是如果您有一個TextBox並且您正在使用其中的內容將項目添加到ListBox ,則更類似於Web窗體的方法是使用一些控件來執行填充TextBox進行回發,然后將ListBox重新綁定到某種數據源。 如果您要回發Ajax,則可以使用UpdatePanel

如果您對JavaScript和查詢字符串參數更滿意,則ASP.NET MVC可能更合適。

據我從您的解釋中了解到的,您需要此頁面上的一種功能,當您單擊列表中的一個列表項時,需要顯示form2中的元素並修改詳細信息...我認為是...使用兩個面板,在ListBox中單擊項目的onclick可以顯示“編輯面板”,並且在更改詳細信息和其他事件(如按鈕單擊..)時,可以顯示具有更改的詳細信息的ListBox面板。

是的,正如Graham提到的那樣,您可以使用Ajax更新面板來完成此任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM