我的项目中有一个dropDownlist,我正在 javascript 中向其中添加项目。现在我想在 C# 中获取选定的索引(在按钮单击事件上)。但我无法做到这一点,因为视图状态没有得到维护似乎是一个问题。我还有更多
EnableEventValidation="false"
在我的页面中请告诉我如何实现此功能?现在我在隐藏字段中添加选定的值,然后在 C# 中访问该隐藏字段。它的工作,但我想要“清洁”。
问候
我的项目中有一个dropDownlist,我正在 javascript 中向其中添加项目。现在我想在 C# 中获取选定的索引(在按钮单击事件上)。但我无法做到这一点,因为视图状态没有得到维护似乎是一个问题。我还有更多
EnableEventValidation="false"
在我的页面中请告诉我如何实现此功能?现在我在隐藏字段中添加选定的值,然后在 C# 中访问该隐藏字段。它的工作,但我想要“清洁”。
问候
当 ASP.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" /> <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];
}