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];
}