我在asp.net网页上有一个表单,其中包含2个下拉列表和一个超链接+一个按钮。 我希望如果用户更改选项是下拉列表以更改导航URL。 我这样做了:
<asp:DropDownList ID="ddlPackages" AutoPostBack ="true" runat="server"
onselectedindexchanged="ddlPackages_SelectedIndexChanged"></asp:DropDownList>
然后我定义了方法。
关键是我在更改下拉菜单时不想提交。我可以只使用aspx或者我必须使用javascript吗?
答案 0 :(得分:2)
如果我理解正确,您希望根据下拉列表的选定值更改超链接的href。你可以用javascript做到这一点。确保您拥有AutoPostBack="false"
并删除OnSelectedIndexChanged
属性。
要使用jQuery执行此操作,请使用以下内容:
<script type="text/javascript>
$(function(){
var $dropdown = $('#<%= ddlPackages.ClientId %>');
$dropdown.change(function(){
//Put logic to decide the link here based on the select value
var newPage = 'page' + $dropdown.val() + '.aspx';
$('#linkId').attr('href', newPage);
});
});
</script>
修改强>
如果你必须根据服务器端的下拉值获得获取新url的逻辑,你可以将方法转换为Page Method并使用上面jQuery脚本中的ajax调用它。但是你可以在aspx页面中动态创建javascript而不是。
答案 1 :(得分:1)
我看到两个选项:
1)将控件包装在更新面板(.NET 3+)中。在下拉列表中放置AutoPostBack = true,并为其定义SelectedIndexChange事件,以更改超链接控件的Navigate URL属性。当用户更改下拉列表时,您的方法将在没有表单提交的外观的情况下触发。缺点:下拉变化和链接变化之间存在轻微延迟。如果你的服务器非常非常慢,这种延迟可能会导致问题(但这可能不太可能)。
2)使用自定义JavaScript并完全取消.NET控件。这是我可能会做的,假设您不需要以编程方式对这些控件执行任何其他操作。您的JavaScript函数将监视SelectedINdexChange的下拉列表并相应地调整锚标记的href属性。如果您对普通JavaScript不太熟悉,请查看jQuery以加快开发速度。
答案 2 :(得分:0)
如果您不想使用AutoPostBack
,则必须使用jQuery或Javascript发布表单
您可以在下拉列表onchange
中添加一个事件,并添加您在jQuery中发布表单所需的代码:
$('#formId').submit();
如果您想导航到其他网址,请在DropDownList
控件上添加以下代码(确保AutoPostBack=false
)
onchange="window.location.href='yourUrl'"
最好将Javascript放在单独的文件上
答案 3 :(得分:0)
如果控件是ASP:DropDownList
,您可以使用AutoPostBack="True|False"
属性来阻止回发