如何在asp.net中提交没有回发的表单?

时间:2012-01-30 14:03:45

标签: c# asp.net drop-down-menu

我在asp.net网页上有一个表单,其中包含2个下拉列表和一个超链接+一个按钮。 我希望如果用户更改选项是下拉列表以更改导航URL。 我这样做了:

<asp:DropDownList ID="ddlPackages" AutoPostBack ="true" runat="server" 
  onselectedindexchanged="ddlPackages_SelectedIndexChanged"></asp:DropDownList>

然后我定义了方法。

关键是我在更改下拉菜单时不想提交。我可以只使用aspx或者我必须使用javascript吗?

4 个答案:

答案 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();

http://api.jquery.com/submit/

如果您想导航到其他网址,请在DropDownList控件上添加以下代码(确保AutoPostBack=false

onchange="window.location.href='yourUrl'"

最好将Javascript放在单独的文件上

答案 3 :(得分:0)

如果控件是ASP:DropDownList,您可以使用AutoPostBack="True|False"属性来阻止回发