C# 从asp.net代码中检索HtmlSelect选项值

C# 从asp.net代码中检索HtmlSelect选项值,c#,asp.net,C#,Asp.net,我在ASP.NETWebForm应用程序中有一个HTML选择控件。它的选项值是从客户端的jquery添加的。我想在页面发回时从服务器端读取这些值。我有以下代码,但它不工作。从客户端添加的选项值在代码隐藏中不可用。如何使这些值可用于代码隐藏 //Client code <select title="Select one" id="selectBooks" multiple="multiple"> <option value="1">test</option&

我在ASP.NETWebForm应用程序中有一个HTML选择控件。它的选项值是从客户端的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();
}
//客户端代码
测试//添加到客户端。
//代码隐藏
System.Web.UI.HtmlControls.HtmlSelect books=(System.Web.UI.HtmlControls.HtmlSelect)form1.FindControl(“selectBooks”);
foreach(在books.Items中列出项目)
{
字符串测试=item.Text.ToString();
}

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

我想到的第一个想法是将值添加到隐藏的输入字段以及选择控件中,这样当用户进行回发时,您可以从输入字段中读取值。
类似这样的内容:

//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
//客户端代码
测试
addedvalue1//添加到客户端。
addedvalue2//添加到客户端。
//服务器端
var data=selectionData.Value;
//添加代码以解析数据

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

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

现在,在回帖中,您可以在服务器上找到隐藏的字段值。

ASP代码:

Request["selectedBooks"]
希望这能奏效