2009-06-11 12 views
-1

の複数のフォームは、ボタンをクリックするだけで、同じaspxページに全く異なるフォームを表示することは可能ですか?私はvb.netとの経験があるが、私はほとんどasp.netと持っていることに注意してください。クリックイベントに、あなたが必要なものをご回答asp.net

+0

私はそれについて考えましたので、もう少し詳細が必要です。与えられた情報に基づいてこれを行うにはいくつかの異なる方法があります。 –

+0

私はあなたがフォームの意味を明確にする必要があると思います。フォーム入力のようなフォームを意味するならば、マルチビューコントロールのようなものはうまくいくでしょう。http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.multiview.aspx – RichardOD

答えて

1

あなたのコードの中で、ページを読み込んでplaceHolderに配置します。そして、javascriptを使って古いフォームを隠す。他の人が言ったアイデアもうまくいくでしょうが、私はプレースホルダーを使っているのが好きです。

私はそれが本当にあなたがフォームでやりたいことと、ページ上にある他のフォームのコードをどれくらいひどく望んでいるのかを本当に決定していると思います。

1

私は理解していれば、のためにどうもありがとうございました:

のResponse.Redirect「newpage.aspx」

+0

はいおそらくそれですしかし、別のページにリダイレクトせずにこれを行う方法はありますか? –

+1

Server.Transfer?技術的にリダイレクトはありません。 – RichardOD

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; 
} 
+0

エラー 'Button2_Click'は 'ASP.default_aspx'のメンバーではありません。 –

+0

同じエラーが発生していますか? –

+0

onclick属性が正しく設定され、Button2_Clickがコードの背後に存在することを確認してください。これらは、この問題の最も明白な原因です。 –

1

あなたはCSS/JavaScriptでそれを行うことができ、ここで私が最初にどうなるのかです:

1)二つの形式アップコードは、それらを配置別のdivで 2)CSSを使用して1ページ分のdivを非表示にする 3)ページ上にボタンを配置し、onlickボタンイベントで2番目のフォームを非表示にして最初のフォームを非表示にします。

1つのフォームタグだけが表示され、その中に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」のソリューションではありませんが、srcをフォームの場所に設定してiframeを使用できます。

1

asp.netページで1 フォームrunat = "server"以上を持つことはできません。あなたができることは、Visibleプロパティをfalseに設定して、ページ上に2つのパネルを作成することです。次に、イベントハンドラでボタンをクリックすると、Visisbleプロパティをtrueに設定し、もう一方をfalseに設定します。ポストバックを取り除くには、Panelを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;

+0

本当ですか?それを許さないのは何ですか?私はちょうど私のローカルマシン上でそれを試したので、それは正常に働いた。 –

+0

何が、それは奇妙な、それは決して働かなかった(それは私がもうそれを試したことはありません)。 ASP.NETは、それがどのフォームにあるかを区別することができません。Page.Formは、もはや動作しません。 – Colin

+1

一度に1つのフォームしか表示属性VISIBLEを持つことはできません。 http://msdn.microsoft.com/en-ca/magazine/cc163736.aspx – sarsnake

1

ASP.NETのMultiViewコントロールに注意する必要があります。ビューを変更するにはポストバックが必要ですが、ViewStateではちょっと重いですが、考慮するオプションです。

1

まあ、私が考えていることについていくつかの方法があります。 tekBluesをリッピングすると、Server.Transfer "yourpage.aspx"を実行できます。 PreviousPageプロパティを使用して、古いページのデータにアクセスできます。

ユーザーコントロールとメインページのプレースホルダを使用できます。もちろん、動的に読み込まれたコントロールは複雑さを増します。

マルチビューコントロールを使用できます。 Asp.Netはあなたのためにすべてのvarsを維持します。すばやく汚れても便利です。

これらはすべてウェブフォームソリューションです。あなたがAJAXソリューションを探しているなら、答えを探し続ける必要があるでしょう。

1

AJAXを使用して、別のページのコンテンツを同じページに読み込みます。

Response.RedirectまたはServer.Transferを使用して次のページに移動します。