从 asp.net 代码隐藏中检索 HtmlSelect 选项值

本文关键字:检索 HtmlSelect 选项 隐藏 asp net 代码 | 更新日期: 2023-09-27 18:33:21

我在WebForm应用程序中有一个HTML选择控件 ASP.Net。它的选项值是从客户端的 jquery 添加的。我想在回发页面时从服务器端读取这些值。我有以下代码,但它不起作用。从客户端添加的选项值在代码隐藏中不可用。如何使这些值可用于代码隐藏?

//Client code
<select title="Select one" id="selectBooks" multiple="multiple">
     <option value="1">test</option> //added in client side.
</select>
//Code behind
System.Web.UI.HtmlControls.HtmlSelect books= (System.Web.UI.HtmlControls.HtmlSelect)form1.FindControl("selectBooks");
foreach (ListItem item in books.Items)
{
   string test = item.Text.ToString();
}

从 asp.net 代码隐藏中检索 HtmlSelect 选项值

ASP 代码:

Request["selectedBooks"]

希望这会起作用。

您的服务器只能知道正在提交给它的数据。
向选择控件添加选项只会将其添加到客户端。
如果用户选择该值,则将提交该值,否则您的服务器将永远不会收到该数据。
如果必须具有额外的值,则必须确保它们以某种方式到达服务器。

我想到的第一个想法是将值添加到隐藏的输入字段以及选择控件,以便在用户执行回发时可以从输入字段中读取值。
像这样:

//Client code
<input id="selectionData" runat="server" type="hidden" value="2--addedvalue1;3--addedvalue2"/>
<select title="Select one" id="selectBooks" multiple="multiple">
     <option value="1">test</option>
     <option value="2">addedvalue1</option> //added in client side.
     <option value="3">addedvalue2</option> //added in client side.
</select>
//Server side
var data = selectionData.Value;
//add code to parse the data

在这里,我建议您在HTML选择控件所在的页面上保留一个隐藏字段

然后在某个按钮的客户端单击事件上设置此隐藏字段中HTML选择的所有选定值。HdnValues.value="1,2,3,4";

现在,在回发时,您可以在服务器上找到隐藏字段值。