如何将多个select html(Chosen.js)元素中的选定值传递给c#

时间:2014-01-03 05:59:48

标签: c# jquery asp.net

我想传递选定的值。我的代码返回没有选中。

在.aspx

<script>
    $('#<%=serialNumberDDL.ClientID %>').chosen();
</script>

<select runat="server" id="serialNumberDDL" name="serialNumberDDL" class="form-control" data-placeholder="select serial number" multiple="true"></select>

在.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    serialNumberDDL.DataTextField = "serialNumber";
    serialNumberDDL.DataValueField = "serialNumber";
    List<SerialNumberJson> temp = LeaseBLL.getAllSerialNumbers();
    serialNumberDDL.DataSource = temp;
    serialNumberDDL.DataBind();
}
protected void btn_Click(object sender, EventArgs e)
{

    string temp = serialNumberDDL.Value; //temp returns null

    List<string> serialNumbers = new List<string>();
    foreach (ListItem li in serialNumberDDL.Items)
    {
        if (li.Selected == true) //always false
        {
            serialNumbers.Add(li.Value);
        }
    }

但是当我使用javascript $('#<%=serialNumberDDL.ClientID %>').val()写出值时,它会显示所选的值。

为什么选定的值未传递给C#?

2 个答案:

答案 0 :(得分:0)

因为此插件适用于客户端而非服务器端。尝试使用HiddenField Control来保存所选数据。并使用此HiddenField.Value来检索所选数据。

<script type="text/javascript">
     function CopySelectedData(){
       $('#<%=hiddenField.ClientID %>').val($('#<%=serialNumberDDL.ClientID %>').val())
       return true;
    }
</script>

<asp:Button ID="btn_Click" runat-"server" OnClientClick="return CopySelectedData()"></asp:Button>

答案 1 :(得分:0)

你的js代码在select标签加载之前运行。尝试文档就绪事件。