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” 拼写相同的四个字母,但它与标准的 Html <FORM> 不同。默认情况下,Button1不是标准 Html <FORM> 中的提交按钮。一个 ASP.NET FORM 中可以有多个 Button 控件。每个 Button 控件都必须绑定到一个 onClick 事件处理程序,即一个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:Button ID='Button1' runat='server'> 甚至不会生成到 <input type='submit' name='Button1' id='Button1'> 除了最简单的 ASP.NET 页面。

于 2012-04-28T14:54:45.413 回答