如何在代码隐藏中获得select的值?

时间:2010-07-26 20:16:00

标签: jquery asp.net

我正在使用ASP.NET,在我的.aspx页面中,我有以下代码,并且根据选择,我显示了相应的div。它的工作原理很好,但问题是:如何在代码隐藏中获取值(用户选择的任何内容)?

<select id="filterResultsBy"  >
    <option value="">Select...</option>
    <option value="Date">Date</option>
    <option value="Subject">Subject</option> 
    <option value="Status">Status</option>
</select>

如果我添加runat="server"或使用服务器asp:DropDownList控件,则jQuery不起作用。

$('#ddlFilter').change(function(){ 
   var sel = $(this).val(); 
   if(sel === 'DATE'){ 
     hideAll();// a function to hide all the divs first 
     $('#divDateRangeSearch').show(); 
   } else if(sel === 'SUBJECT'){ 
     ///so on... 
   } 
}); 

4 个答案:

答案 0 :(得分:1)

在ASP.NET中,通常的惯例是使用服务器端控件,它可以更好地与Postback模型配合使用。所以你可以使用等价物:

<asp:DropDownList ID="filterResultsBy" runat="server" CssClass="ddlFilter">
    <asp:ListItem Value="" Text="Select..." />
    <asp:ListItem Value="Date" Text="Date" />
    <asp:ListItem Value="Subject" Text="Subject" />
    <asp:ListItem Value="Status" Text="Status" />
</asp:DropDownList>

允许您访问后面代码中的filterResultsBy变量并检索当前选定的值。为了使用jQuery等客户端脚本库,可以添加一个类并使用类选择器而不是id选择器,因为ASP.NET服务器端控件中出现了名称错误:

$('.ddlFilter').change(function() {
    var sel = $(this).val(); 
    if(sel === 'DATE') { 
        hideAll(); // a function to hide all the divs first 
        $('#divDateRangeSearch').show(); 
    } else if (sel === 'SUBJECT') { 
        ///so on... 
    } 
});

答案 1 :(得分:0)

您需要将RunAt="Server"添加到您的选择标记。

<select id="filterResultsBy" Runat="Server"  >
     <option value="">Select...</option>
     <option value="Date">Date</option>
     <option value="Subject">Subject</option> 
     <option value="Status">Status</option>
</select>

答案 2 :(得分:0)

使用DropDownList控件或将runat =“server”属性添加到select标记以将其升级为HtmlSelect control

答案 3 :(得分:0)

另一个选项(如果您希望ajaxify您的页面)将保持您的选择原样,只需使用jquery ajax调用通过Web /页面方法进行通信。