C# 获取所有下拉列表的选定选项

C# 获取所有下拉列表的选定选项,c#,asp.net,listitem,C#,Asp.net,Listitem,我正在尝试获取页面上的所有下拉列表,以及每个列表中的所选项目文本/值。但我似乎错过了什么 foreach (DropDownList dr in this.Page.Form.Controls.OfType<DropDownList>()) { foreach (ListItem li in dr.Items) { if (li.Selected) { //put the selected items value/text in

我正在尝试获取页面上的所有下拉列表,以及每个列表中的所选项目文本/值。但我似乎错过了什么

foreach (DropDownList dr in this.Page.Form.Controls.OfType<DropDownList>()) {
    foreach (ListItem li in dr.Items) {
            if (li.Selected) {
            //put the selected items value/text into something.
        }
    }
}
foreach(DropDownList dr在此.Page.Form.Controls.OfType()中){
foreach(在dr.Items中列出项目li){
如果(li.选定){
//将所选项目值/文本放入某些内容中。
}
}
}
有什么办法吗

编辑:使其更清晰。我有一个随机数量的Dropdownlist,在这里我可以选择1个选项pr Dropdownlist。当我按下按钮时,我需要从每个下拉列表中选择的内容中获取信息。(DropDownLists上没有ID,这是一个随机数)。

受保护的无效按钮1\u单击(对象发送者,事件参数e)
{
List lst=新列表();
GetDropDownControls(GetListOfControlCollection(this.Form.Controls),ref lst);
foreach(lst中的DropDownList项)
{
var selectedValue=item.selectedValue;
//做有价值的事
}
}
void GetDropDownControls(列表控件,参考列表lst)
{
foreach(控件中的控件项)
{
如果(item.Controls.Count==0&&item是DropDownList)
添加((下拉列表)项);
其他的
如果(item.Controls.Count>0)
GetDropDownControls(GetListOfControlCollection(item.Controls),参考lst);
}
}
列表GetListOfControlCollection(ControlCollection控件)
{
列表结果=新列表();
foreach(控件中的控件项)
{
结果.添加(项目);
}
返回结果;
}

您面临的问题是什么?有例外吗?我没有被选中,即使我在下拉列表中选择了一个列表项。@user3314032-你是说你在动态创建这些下拉列表?如果没有,则显示下拉列表的标记代码。下拉列表由一些JS代码填充。(当dom准备就绪时)。如果您在脚本中将这些下拉列表添加到dom中,那么您将无法像这样在服务器端访问它们。虽然这可能是一个很好的解决方案,但请尝试解释您正在做什么,以及为什么这是询问者的正确解决方案。
protected void Button1_Click(object sender, EventArgs e)
    {
        List<DropDownList> lst = new List<DropDownList>();
        GetDropDownControls(GetListOfControlCollection(this.Form.Controls), ref lst);

        foreach (DropDownList item in lst)
        {
            var selectedValue = item.SelectedValue;
            //to do something with value
        }

    }

        void GetDropDownControls(List<Control> controls, ref List<DropDownList> lst)
    {
        foreach (Control item in controls)
        {
            if (item.Controls.Count == 0 && item is DropDownList)
                lst.Add((DropDownList)item);
            else
                if (item.Controls.Count > 0)
                    GetDropDownControls(GetListOfControlCollection(item.Controls), ref lst);
        }
    }

    List<Control> GetListOfControlCollection(ControlCollection controls)
    {
        List<Control> result = new List<Control>();
        foreach (Control item in controls)
        {
            result.Add(item);
        }
        return result;
    }