如何获取所有 Web 表单元素值

本文关键字:Web 表单 元素 何获取 获取 | 更新日期: 2023-09-27 18:36:56

我有一个简单的网络表单,由几个文本框和下拉菜单组成。我需要一种方法来从列表中开始获取所有元素的值。我知道我可以使用 textbox1.value 单独获取值,但我不知道表单中有多少文本框/下拉列表。例如

<form id="form1" runat="server">
    <div>
        Tier: 
            <asp:DropDownList ID="Tier" runat="server">
                        <asp:ListItem>Select Tier</asp:ListItem>
                        <asp:ListItem>Tier1</asp:ListItem>
                        <asp:ListItem>Tire2</asp:ListItem>
                        <asp:ListItem>Tier3</asp:ListItem>
            </asp:DropDownList>
        Author: 
            <asp:DropDownList ID="Author" runat="server">
                        <asp:ListItem>Select Author</asp:ListItem>
                        <asp:ListItem>Author1</asp:ListItem>
                        <asp:ListItem>Author2</asp:ListItem>
                        <asp:ListItem>Author3</asp:ListItem>
            </asp:DropDownList>
        Quotation For:
            <asp:TextBox ID="questionfor" runat="server"></asp:TextBox>
    </div>

如何获取列表中的值?如何循环浏览它们?最终目的是将元素 ID 及其值存储在数据库中。因此,除了值,我还需要id。例如,在数据库中,我将有两个列元素名称(即元素ID)及其相应的值。

如何获取所有 Web 表单元素值

这里有你可以尝试的东西

Protected void GetControlValues(ControlCollection  controls)
{
    var holdList = new List<string>();
    foreach(Control c in controls)
    {
        if(c is System.Web.UI.WebControls.TextBox)
        {
            holdList.Add(c.Text); //this will get the value of the TextBox 
        } 
        else if (c.controls.Count > 0)
        {
            GetControlValues(c.Controls)
        }
    }
}

如果你想获取ID值,那么你可以检查if(c.ID == textBoxId.ID)然后将该textBoxId.Text添加到列表中,如果你知道你正在检查的控件类型,你可以在这个foreach循环中有多个if检查。