【问题标题】:Cannot loop through web form Control in c#无法循环通过c#中的Web表单控件
【发布时间】:2016-02-29 20:35:43
【问题描述】:

我有一个带有一些下拉列表和文本框的简单网络表单。我试图通过循环控制来获取所有元素的值。 (请注意,我假设我不知道元素的名称/ID,因此我试图遍历它们以获取信息并将其存储在数据库中)但是,当我循环通过控件时,即使计数为 5有 4 个输入元素,控件由 System.Web.UI.LiteralControl 表示,而不是 System.Web.UI.WebControls.TextBox 或 System.Web.UI.WebControls.dropdown

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>

    <script src="Datepicker/jquery-1.7.js" type="text/javascript"></script>
    <script src="Datepicker/jquery-ui.js" type="text/javascript"></script> 
    <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css" />

     <script>
         $(function () {
             $("#targetDueDate").datepicker();
         });
  </script>
    <script>
        $(function () {
            $("#targetdeliveryoffiles").datepicker();
        });
  </script>

</head>
<body>
    <form id="form1" runat="server">
        <div>
            <table>

                <tr>
                    <td>Tier:

                    </td>

                    <td>
                        <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>

                    </td>
                </tr>

                <tr>
                    <td>Author: 

                    </td>

                    <td>
                        <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>
                    </td>
                </tr>


                      <tr>
                    <td>Quotation For:

                    </td>

                    <td>
                        <asp:TextBox ID="quotationFor" runat="server"></asp:TextBox>

                    </td>
                </tr>

                <tr>
                    <td>Previous Est #:</td>
                    <td>
                        <asp:TextBox ID="previousEst" runat="server"></asp:TextBox>
                        <asp:RegularExpressionValidator ID="RegularExpressionValidator1"
                            ControlToValidate="previousEst"
                            ValidationExpression="\d+"
                            Display="Dynamic"
                            EnableClientScript="true"
                            ErrorMessage="Please enter numbers only"
                            runat="server" ValidationGroup="a" ForeColor="Red" />
                    </td>
                </tr>


            </table>

            <br />

            <div style="text-align: center; width: 327px;">

                <asp:Button ID="submit" runat="server" Text="Submit" CssClass="btnsubmit" ValidationGroup="a" OnClick="submit_Click" />

            </div>


        </div>
    </form>
</body>
</html>

onsubmit 代码

protected void submit_Click(object sender, EventArgs e)
    {
        foreach(Control c in controls)
         {
            if(c is System.Web.UI.WebControls.TextBox)
            {
                /// Do Something
            }
        }
    }

我做错了什么?如何遍历元素以获取它们的值? (也是ID,因为我需要将两者都存储在数据库中)

【问题讨论】:

    标签: c# asp.net .net webforms


    【解决方案1】:

    Web 表单中的一切都是控件;静态文本是 LiteralControl 类型。因此,您需要照常检查控件的类型,并避免使用 Label、Literal、LiteralControl 类型的控件,只需在表单上查找控件即可。有些控件是容器控件,因此您可能需要进行递归才能使其工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-07
      相关资源
      最近更新 更多