繁体   English   中英

如何仅在按下提交按钮时提交ASP.NET表单,而不是通过自动回发更改下拉列表的选定索引时才提交ASP.NET表单?

[英]How to submit ASP.NET form only when the submit button is pressed and not when the selected index is changed of a dropdownlist with autopostback?

我的问题是关于ASP.NET中的自动回发:

我在autopostback为true的情况下创建了一个dropdownlist。 根据选择的下拉列表值,它将生成一些HTML,效果很好。

但是,当我将属性操作放入form标记时,如果我更改下拉列表的索引,它将自动提交表单。

因此,我仅在按下提交按钮时才需要提交表单,并且在更改下拉列表时仍需要生成HTML,我该如何解决呢?

在此先感谢您的帮助。

一个好的经验法则是仅在需要服务器端的数据时才在服务器端执行操作。 这意味着,如果您只是基于下拉列表中选择的内容显示不同的HTML,则可以使用HTML / JavaScript进行简单下拉而不是使用服务器端技术。 活动部件越少越好。

但是,如果此HTML依赖于服务器端的数据,则可以使用以下技术来处理:

UpdatePanel是一种解决方案,它将异步发回到服务器,而不会干扰页面的其余部分。 页面的Page_Load函数将与每个异步回发一起运行,因此请确保相应地进行规划。

<asp:ScripManager runat="server" />
<asp:UpdatePanel runat="server" ChildrenAsTriggers="True" UpdateMode="Conditional">
<Content>
<asp:DropDownList runat="server" id="MyDDL" AutoPostBack="True" OnSelectedIndexChanged="MyDDL_SelectedIndexChanged" />
</Content>
</asp:UpdatePanel>

但是,我发现UpdatePanels带来了比他们值得的更多的头痛。 因此,我个人倾向于使用jQuery AJAX代替,从简单的Web服务中提取HTML。 您可以找到许多有关如何在线进行操作的示例。 这是一个更改后的事件处理程序的示例 ,这是jQuery AJAX示例

您可以使用带有按钮的UpdatePanel作为触发器。 您也可以按照注释中的建议将AutoPostBack设置为false。

自从我开发ASP.NET WebForms以来已经有一段时间了...世界已经转移到ASP.NET MVC和Node.js和Ajax。 也许使用UpdatePanel? 从我记得的情况来看,我认为WebForms通过两种方式回传以获取数据,您可以通过检查Page.IsPostBack来检查它是否来自提交。

http://msdn.microsoft.com/zh-CN/library/system.web.ui.page.ispostback(v=vs.110).aspx

我认为这个难题的另一部分是检查提交按钮的值或在服务器上添加按钮单击处理程序以进行提交...

http://forums.asp.net/t/1795485.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM