2009-06-11 85 views
-1

是否可以在同一個aspx頁面上點擊按鈕來顯示完全不同的表單?請注意,雖然我有與vb.net的經驗,我幾乎沒有與asp.net。非常感謝您的答覆asp.net中的多種形式

+0

現在我想到了,我們需要更詳細的問題。根據所提供的信息,有許多不同的方法可以做到這一點。 – 2009-06-11 17:48:52

+0

我認爲你需要澄清你的意思的形式。如果你的意思是形式表單中的表單然後類似多視圖控制將運作良好 - http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.multiview.aspx – RichardOD 2009-06-11 17:50:07

回答

1

我會在後面的代碼中使用,加載頁面,然後將其放置在placeHolder中。然後使用javascript隱藏舊的表單。另一個人說的想法也可以工作,但我喜歡使用佔位符,我自己。

我認爲這完全取決於您想要對錶單做什麼,以及您希望將其他表單放置在頁面上的代碼有多糟糕,或者不是。

1

如果我理解,你需要的是,在點擊事件:

的Response.Redirect「newpage.aspx」

+0

是的也許就是這樣,但有沒有辦法做到這一點,而不重定向到不同的頁面? – 2009-06-11 17:42:07

+1

Server.Transfer?這在技術上不會做重定向。 – RichardOD 2009-06-11 17:47:25

1

在同一頁面上創建每一表格,其中一個visible = true,另一個visible = false,當用戶點擊適當的按鈕時,切換可見性。

<form id="Form1" runat="server" visible="true"> 
<div> 
    <asp:Button ID="Button1" runat="server" Text="Show Form 2" onclick="Button1_Click" /> 
</div> 
</form> 

<form id="Form2" runat="server" visible="false"> 
<div> 
    <asp:Button ID="Button2" runat="server" Text="Show Form 1" onclick="Button2_Click" /> 
</div> 
</form> 

而且在後面的代碼:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    this.form2.Visible = true; 
    this.form1.Visible = false; 
} 

protected void Button2_Click(object sender, EventArgs e) 
{ 
    this.form2.Visible = false; 
    this.form1.Visible = true; 
} 
1

您可以用CSS/JavaScript的做到這一點,這裏是我首先會做的事:

1)代碼了兩種形式,將它們放置在一個單獨的divs中 2)使用CSS在頁面加載時隱藏一個div 3)然後在頁面上放置一個按鈕,在onlick按鈕事件中取消隱藏第二個窗體並隱藏第一個窗體。

確保您只有一個窗體標籤,但其中2個div將隱藏/取消隱藏。請記住,該表單只能提交到自己的頁面,即asp.net。

在你的HTML:

<form runat="server" id="myForm"> 

<div id="myForm1"> 
<! -- form 1 code goes here -- !> 
</div> 

<div id="myForm2"> 
<! -- form 2 code goes here -- !> 
</div> 

<input type="button" onclick="toggleVisibility();" /> 

</form> 

然後在你的CSS

#myForm1 { 
display: none; 
} 

然後ToggleVisibility()將改變的div的顯示屬性。

1

可能不是最「Ajaxy」的解決方案,但您可以使用iframe,將src設置爲表單位置。

1

它不允許在asp.net頁面上有更多的形式runat =「server」。你可以做的是在頁面上創建2個面板,其中Visible屬性設置爲false。然後,在事件處理程序中單擊按鈕時,將Visisble屬性設置爲true,同時將另一個設置爲false。將面板包裝在UpdatePanel中以擺脫回發。

<asp:UpdatePanel><ContentTemplate> 
<asp:Panel ID="pnl1" runat="server"> 
    <asp:Button OnClick="Button_CLick" /> 
</asp:Panel> 
<asp:Panel ID="pnl2" runat="server" Visible="false"> 
</asp:Panel></ContentTemplate></asp:UpdatePanel> 

Button_CLick處理程序中的代碼將是pnl1.Visible = false; pnl2.Visible = true;

1

您應該瞭解ASP.NET的MultiView控件。它確實需要回發來更改視圖,並且它對ViewState有點沉重,但它是一個可供選擇的選項。

1

好吧,我想有幾種方法可以解決這個問題。關閉tekBlues,你可以做一個Server.Transfer「yourpage.aspx」。然後,您可以使用PreviousPage屬性從舊頁面獲取數據。

您可以在主頁面上使用用戶控件和佔位符。當然,動態加載的控件具有額外的複雜性

您可以使用MultiView控件。 Asp.Net將爲您保留所有的增值稅。用於快速和骯髒。

雖然這些都是webform解決方案。如果您正在尋找AJAX解決方案,可能需要繼續尋找答案。

1

使用AJAX將另一頁的內容加載到同一頁面。

使用Response.Redirect或Server.Transfer移動到下一頁。