从多个下拉列表中获取所有值

时间:2018-01-08 23:06:09

标签: c# asp.net json

我是.NET新手,我试图从第一个和第二个下拉列表中获取这两个值。比如,两个下拉列表都没有ID,我无法控制它们的数量。

我有以下aspx代码:

<%@ Page Language="C#"%>
<!DOCTYPE html>
<html>
    <head>
    <script runat="server">
        protected void btnClick_Click(object sender, EventArgs e){
            lblResult.InnerHtml = "asd";
        }
    </script>
    </head>

    <body>
        <form runat="server">
            <asp:dropdownlist runat="server">
                <asp:listitem value="A">A</asp:listitem>
                <asp:listitem value="B">B</asp:listitem>
            </asp:dropdownlist>

            <asp:dropdownlist runat="server" multiple>
                <asp:listitem value="C">C</asp:listitem>
                <asp:listitem value="D">D</asp:listitem>
                <asp:listitem value="E">E</asp:listitem>
                <asp:listitem value="F">E</asp:listitem>
                <asp:listitem value="G">E</asp:listitem>
            </asp:dropdownlist>

            <asp:button id="btnClick" runat="server" onclick="btnClick_Click" text="Click"></asp:button>

            <span id="lblResult" runat="server"></span>
        </form>
    </body>
</html>

说,在第一个下拉列表中选择 A ,并在第二个下拉列表中选择 C F

期待以下输出:

Combined Values: A,C,F
Separated Values in JSON Format: {"dropdown1":"A","dropdown2":["C","F"]}

编辑1:查看上面的完整代码。
编辑2:在没有AJAX的情况下寻找两个输出
编辑3:重新短语“下拉动态被动态附加”到“我无法控制将有多少下拉列表。”避免混淆。
编辑4:这几乎与以下问题相同:Get selected option for all DropDown-lists ...但是,接受的答案只选择多个<select>元素中的最后一个选定值。

谢谢!

1 个答案:

答案 0 :(得分:1)

我不确定动态是什么意思,因为服务器会在浏览器显示页面之前预呈现您的控件。由于您不需要Ajax,因此您被迫进入称为页面加载事件的意大利面条。基本上,您正在尝试创建,验证,存储和输出。那可怕的方法是:

var output = String.Empty;
if(!string.IsNullOrEmpty(dropdownA.SelectedValue))
     if(!string.IsNullOrEmpty(dropdownB.SelectedValue))
          output = $"{dropdownA.SelectedValue} {dropdownB.SelectedValue}";

这将在页面加载中,因此每次进行回发时都会进行检查。此外,值的变化应在HttpContext范围内。您还需要确保告诉控件重新加载,因此每次发生更改时控件都会执行服务器事件。显然,你会有很多屏幕闪烁。