【问题标题】: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 表单,而不是在使用自动回发更改下拉列表的选定索引时提交?
【发布时间】:2014-01-28 15:48:11
【问题描述】:

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

我创建了一个下拉列表,其中自动回发为 true。根据下拉列表选择的值,它会生成一些 HTML,效果很好。

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

所以我只需要在我按下提交按钮时提交表单,当我更改下拉列表时它仍然需要生成 HTML,我该如何解决这个问题?

提前感谢您的帮助。

【问题讨论】:

  • 只需将下拉列表的AutoPostBack 设置为false?
  • 但是HTML是在后面的代码中生成的

标签: c# asp.net html forms autopostback


【解决方案1】:

一个好的经验法则是仅在需要来自服务器的数据时才在服务器端执行操作。这意味着如果您只是根据下拉列表中选择的内容显示不同的 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>

但是,我发现 UpdatePanel 带来的麻烦超出了它们的价值。所以我个人倾向于使用 jQuery AJAX,从一个简单的 Web 服务中提取 HTML。你可以在网上找到很多关于如何做到这一点的例子。 Here is an example 已更改的事件处理程序,这里是 jQuery AJAX example

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      自从我从事 ASP.NET WebForms 工作以来已经有一段时间了……世界已经转向 ASP.NET MVC、Node.js 和 Ajax。也许使用更新面板?根据我的记忆,我认为 WebForms 以两种方式回帖以获取数据,您可以通过检查 Page.IsPostBack 来检查它是否来自提交

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

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

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

      【讨论】:

        猜你喜欢
        • 2015-06-30
        • 2018-02-10
        • 1970-01-01
        • 2013-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多