获取c#中Javascript修改下拉列表的选定值

本文关键字:下拉列表 修改 Javascript 获取 | 更新日期: 2023-09-27 17:53:59

我在我的项目中有一个下拉列表,我在javascript中添加项目。现在我想在c# 中获得选定的索引(在按钮单击事件上)。但我无法做到这一点,因为它似乎是一个问题,视图状态不维护。此外,我有

EnableEventValidation="false" 

在我的页面请告诉我如何才能实现这个功能?现在我在一个隐藏字段中添加选定的值,然后在c#中访问该隐藏字段。它工作,但我想要"清洁"。

获取c#中Javascript修改下拉列表的选定值

. NET执行表单POST,需要将下拉选项传递给服务器并在那里重新创建以进行进一步处理。这是通过ViewState实现的。

我不知道有什么其他的方法可以做到这一点,但是你可以做的是使用Request.Form[ddlProducts.UniqueID]检索下拉列表的选定值,如果你能根据选定的值计算出项目索引,太好了!否则我认为隐藏字段是你唯一的选择

这里有一个完整的例子:

<head runat="server">
    <title></title>
    <script type="text/javascript">
        window.onload = function () {
            var select = document.getElementById("ddlProducts");
            select.options[select.options.length] = new Option('Product 1', 'Value 1');
            select.options[select.options.length] = new Option('Product 2', 'Value 2');
            select.options[select.options.length] = new Option('Product 3', 'Value 3');
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DropDownList ID="ddlProducts" runat="server">
        </asp:DropDownList>
        <asp:Button ID="btnOK" runat="server" Text="OK" OnClick="Process" />&nbsp;<span id="output"
            runat="server" />
    </div>
    </form>
</body>
</html>
protected void Process(object sender, EventArgs e)
{
    int selectedIndex = ddlProducts.SelectedIndex;
    output.InnerHtml = Request.Form[ddlProducts.UniqueID];
}