2

ラジオ ボタンを含むフォームと、ページをリロードするだけでフォーム データを送信しない送信ボタンがあります...これらのラジオ ボタンの値を取得するには、フォーム アクションまたはメソッドで何をすべきですか

<form id="form2" name="form2" method="post" action="" runat="server">

    <br />

    <asp:Button ID="Button1" runat="server" Text="Button" />
</form>
4

2 に答える 2

5

あなたのコードにはラジオボタンコントロールがないようです...

さまざまなオプションを示すサンプル:

HTML

<form id="form1" runat="server">
 <div>
    <p>
        Name:
        <asp:TextBox ID="textbox1" runat="server" />
        <br />
        Coffee preference:
        <asp:RadioButtonList ID="CoffeeSelections" runat="server" RepeatLayout="Flow" RepeatDirection="Horizontal">
            <asp:ListItem>Latte</asp:ListItem>
            <asp:ListItem>Americano</asp:ListItem>
            <asp:ListItem>Capuccino</asp:ListItem>
            <asp:ListItem>Espresso</asp:ListItem>
        </asp:RadioButtonList>
        <br />
    </p>
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</div>
<div>
    <h1>
        Results</h1>
    <p>
        <asp:Label runat="server" ID="labelResults"></asp:Label></p>
</div>
</form>

コード:

//You can inspect on Page_Load
protected void Page_Load(object sender, EventArgs e)
{
    //Only inspect on submission
    if (Page.IsPostBack)
    {
        if (!string.IsNullOrEmpty(CoffeeSelections.SelectedValue))
        {
            labelResults.Text = CoffeeSelections.SelectedValue + "<br />";
        }

        //you can also inspect request.form colletion
        foreach (string item in Request.Form)
        {
            labelResults.Text += "<b>KEY</b> : " + item + " <b>VALUE</b> = " + Request.Form[item] + "<br />";
        }
    }
}

//You can also inspect on raised control events (e.g. button)
protected void Button1_Click(object sender, EventArgs e)
{
    string _foo = CoffeeSelections.SelectedValue;
    labelResults.Text += _foo;

}
于 2012-04-28T17:35:23.977 に答える
2

ASP.NET Web フォームは、Windows フォーム アプリケーションのようなものを操作しているような錯覚を与えようとします。Html のバックグラウンドを持っている場合は、環境に順応する必要があります。

ASP.NET の "FORM" は同じ 4 文字で綴られていますが、標準の Html <FORM> とは異なります。デフォルトでは、Button1 は標準の Html <FORM> の送信ボタンではありません。ASP.NET FORM には複数の Button コントロールを含めることができます。各 Button コントロールは onClick イベント ハンドラー ( la Windows フォーム) に関連付ける必要があり、このイベント ハンドラーにコードを配置します。

ASPX デザイン タブで Button1 をダブルクリックすると、コード ビハインド ページで Button1_Click イベントが生成されます。コードをこのイベント ハンドラーに配置します。

次に、ASP.NET はいくつかの Html 出力を生成して、Button1 を onClick スクリプト (Button1_Click イベント ハンドラーと混同しないでください) を含む <INPUT TYPE='SUBMIT'> Html コントロールにして、以下を含むフォーム パラメーターを使用してサーバーにポスト バックします。 __VIEWSTATE と呼ばれる巨大なものです。次に、サーバーは __VIEWSTATE を使用して、ユーザーが Button1_Click イベント ハンドラーにいることを確認し、そこでコードを実行します。

ラジオボタンも同様です。ASP.NET は、ラジオ ボタンから <INPUT TYPE='RADIO'> を生成しますが、これについて心配する必要はありません (または想定されていません)。Button1_Click イベント ハンドラーで、ASP.NET ラジオ ボタン コントロールのプロパティを読み取ることができます。

ASP.NET では、基本的に、生成される Html 出力を知らず、制御を放棄することになっています。サーバー上で見えるオブジェクト (コード ビハインド) のみを操作することになっています。最も単純な ASP.NET ページを除いて、<asp:Button ID='Button1' runat='server'> は <input type='submit' name='Button1' id='Button1'> にさえ生成されません。

于 2012-04-28T14:54:45.413 に答える