Asp.net 如何在asp中提交表单并获取其值

Asp.net 如何在asp中提交表单并获取其值,asp.net,html,Asp.net,Html,我有一个带有单选按钮的表单和一个只重新加载页面而不提交表单数据的提交按钮…我应该在表单操作或方法中做些什么,以便获得这些单选按钮值 <form id="form2" name="form2" method="post" action="" runat="server"> <br /> <asp:Button ID="Button1" runat="server" Text="Button" /> </form> ASP.N

我有一个带有单选按钮的表单和一个只重新加载页面而不提交表单数据的提交按钮…我应该在表单操作或方法中做些什么,以便获得这些单选按钮值

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

    <br />

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



ASP.NET Web表单试图让您产生一种错觉,以为您正在使用类似Windows表单的应用程序。如果您来自Html背景,则需要一些ACLimalization

尽管ASP.NET“FORM”拼写为相同的四个字母,但它与标准Html不同。默认情况下,Button1不是标准Html中的Submit按钮。ASP.NET表单中可以有多个按钮控件。每个按钮控件都必须绑定到一个onClick事件处理程序,一个la-Windows窗体,然后将代码放入这个事件处理程序中

双击ASPX设计选项卡中的按钮1,将在代码隐藏页面中为您生成按钮1\u单击事件。将代码放入此事件处理程序中

然后ASP.NET生成一些Html输出,使您的Button1成为一个Html控件,并带有onClick脚本(不要与Button1_Click事件处理程序混淆),以使用表单参数发回服务器,表单参数包括一个名为__VIEWSTATE的巨大参数。然后,服务器使用_VIEWSTATE确定您处于Button1_Click事件处理程序中,并继续在那里执行代码

单选按钮也是如此。ASP.NET将从您的单选按钮生成,但您不需要(或不应该)关心这一点。在Button1\u Click事件处理程序中,可以读取ASP.NET单选按钮控件的属性


对于ASP.NET,基本上您不应该知道并放弃对生成的Html输出的控制。您应该只处理服务器上可见的对象(代码隐藏)。除了最简单的ASP.NET页面外,甚至不生成到。您的代码似乎没有任何单选按钮控件

显示不同选项的示例:

HTML



姓名:

咖啡偏好: 拿铁 美式咖啡 卡布奇诺 意大利浓咖啡

结果

代码:

//您可以在加载页面上进行检查
受保护的无效页面加载(对象发送方、事件参数e)
{
//仅在提交时检查
如果(第IsPostBack页)
{
如果(!string.IsNullOrEmpty(CoffeeSelections.SelectedValue))
{
labelResults.Text=CoffeeSelections.SelectedValue+“
”; } //您还可以检查request.form Collection foreach(Request.Form中的字符串项) { labelResults.Text+=“键:”+item+“值=“+Request.Form[item]+”
”; } } } //您还可以检查引发的控制事件(例如按钮) 受保护的无效按钮1\u单击(对象发送者,事件参数e) { 字符串_foo=咖啡选择。SelectedValue; labelResults.Text+=\u foo; }
我在那里没有看到任何单选按钮。您将它们放在哪里?仍然无法确定如何在服务器端或客户端获取表单值,您不必这样做。正如我所解释的,暂时忽略你所知道的关于Html的一切。如果你的ASP.NET有,在你的代码隐藏中,你可以做一些事情,比如If(X1.Checked)…做一些工作…我假设你有一个代码隐藏页面。您是否创建了代码隐藏页xxxx.aspx.cs?如果没有,请将onclick='Button1\u Click'添加到Button1控件,然后右键单击并选择查看代码。如果您没有查看代码选项,请告诉我们。您似乎处于源代码模式。在Visual Studio(或Web Developer Express)的aspx页面底部,单击“设计”选项卡。您可以来回切换以查看修改ASP.NET控件如何直观地更改标记。澄清:ASP.NET不会要求您忘记任何HTML,因为它是HTML。虽然ASP.Net的WebForms技术可能会给人留下这样的印象,但它只是一种印象。您可以将任何“标准”HTML元素设置为“服务器端HTML控件”:
。此外,在最新版本的ASP.Net(razor)中,必须磨练您的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;

}