我正在使用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...
}
});
答案 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 /页面方法进行通信。