0

私はウェブページを持っています。上部には、 内にある検索バーがあります<form id="form1" runat="server">

また、同じページに、ユーザーが詳細を登録できるフォームを追加したいと考えています。問題、ASP.NET はページごとに 1 つのフォームしか許可しません。

どうすれば目標を達成できますか? 回避策はありますか?

4

4 に答える 4

0

@Simonの回答ですでに述べたように、コードに複数のクリックハンドラーを含めるのは簡単です。ページで必要なものを正確に処理するために、これが「複数のフォームの欠如」の問題を解決する最も簡単な方法です。

この状況で非常に役立つものは、コントロールのDefaultButton属性です。<asp:Panel>つまり、ページの複数の領域に(たとえば)<asp:TextBox>コントロールがあり、それらの各領域に特定の領域が<asp:Button>関連付けられている場合、フォーカスがテキストボックスの1つにある場合は、を押すReturnEnterDefaultButtonクリックされます。

例えば...

<asp:Panel runat="server" DefaultButton="btnSearch">
  Search: <asp:TextBox runat="server" id="txtSearcn"/>
  <asp:Button runat="server" id="btnSearch" Text="Search" OnClick="btnSearch_Click"/>
</asp:Panel>

DefaultButtonの属性の詳細については、MSDNを参照してください。<asp:Panel>

于 2012-10-26T10:56:54.570 に答える
0

呼び出したいコードをさまざまなボタンクリックイベントに配置します。したがって、検索ボタンがクリックされると、検索ボタンのクリックイベントのコードのみが実行されます。登録ボタンがクリックされると、登録クリックイベントのコードのみが実行されます。

次に例を示します。

protected void Page_Load(object sender, EventArgs e) {

    // Common code

}

protected void btnSearch_Click(object sender, EventArgs e) {

    // Search code

}

protected void btnRegister_Click(object sender, EventArgs e) {

    // Register code

}

デザイナのボタンをダブルクリックすると、コードビハインドにクリックイベントが作成されます。

于 2012-10-26T10:44:52.917 に答える
0

1つのページに配置できるサーバー側フォームは1つだけです。

オプションの場合は、クライアント側のフォーム(runat="server") with a separate action - this POST can go to a different page, where you will have to access投稿された値を取得するためのRequest.Form`なし)を使用できます。

別のオプションは、異なるイベントハンドラーで投稿するために別々のボタンを使用することです。

于 2012-10-26T10:45:10.117 に答える
0

単純な HTML フォーム アプローチを使用できますが、常にページ全体をポスト バックするという問題があります。または mvc を使用します。

asp.net 3.5 では、1 つのページに複数のフォームがサポートされていますか?

于 2012-10-26T10:46:28.793 に答える