javascript - 如何获取 ASP.NET page_load 事件来触发 AJAX UpdatePanel 更新

标签 javascript asp.net updatepanel

我在 ASP.NET 中有一个页面,上面有一些更新面板。页面加载后,我希望 updatepanels 触发 updatepanels 进行更新。

我正在使用this答案说将此 JavaScript 放在页面上。

$(document).ready(function () {
    window.__doPostBack('<%= hiddenAsyncTrigger.ClientID %>', 'OnClick');
});

但是,这会导致点击事件被垃圾邮件发送,因为加载事件正在触发另一个加载...??

更新面板一切正常,问题在于页面加载后一次触发更新

最佳答案

使用客户端控件而不是服务器端:

<%@ Page Language="C#" %>
<script runat="server">
  protected string CurrentTime()
  {
    return DateTime.Now.ToString();
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
  <head runat="server">
    <title>Untitled Page</title>
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script language="JavaScript">
      $(document).ready(function () {
        $("#Updater").click()
      });
    </script>
  </head>

  <body>
    <form id="MyForm" runat="server">
      <div>
        Outside the panel: <%=CurrentTime() %>
      </div>
      <br />
      <br />
      <asp:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" runat="server" />
      <asp:UpdatePanel ID="panel" runat="server" UpdateMode="conditional">
        <ContentTemplate>
          <div>
            Inside the panel: <%=CurrentTime() %>
          </div>
          <input type="submit" id="Updater" style="display: none" />
        </ContentTemplate>
      </asp:UpdatePanel>
    </form>
  </body>
</html>

另一种解决方案 - 没有隐藏触发器,使用 __doPostBack

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplicationTest.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Untitled Page</title>
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script language="JavaScript">
        $(document).ready(function () {
            __doPostBack('panel', '');
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            Outside the panel: <%=CurrentTime() %>
        </div>
        <br />
        <br />
        <asp:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" runat="server" />
        <asp:UpdatePanel ID="panel" runat="server" UpdateMode="conditional">
            <ContentTemplate>
                <div>
                    Inside the panel: <%=CurrentTime() %>
                </div>
                <input type="submit" id="Updater" style="display: none" />
            </ContentTemplate>
        </asp:UpdatePanel>
    </form>
</body>
</html>

using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplicationTest
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected string CurrentTime()
        {
            System.Diagnostics.Debug.WriteLine("CurrentTime was called");
            return DateTime.Now.ToString();
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            System.Diagnostics.Debug.WriteLine("PageLoad was called");
        }
    }
}

关于javascript - 如何获取 ASP.NET page_load 事件来触发 AJAX UpdatePanel 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16520471/

相关文章:

c# - ASP.NET:多台服务器上的 SHA1 + Salt 密码哈希

asp.net - 在 asp.net ajax 工具包中组合脚本

firefox - 页面刷新后 DropDownList SelectedIndex 在 FireFox 中不起作用

.net - 如何在更新面板更新后运行Javascript

javascript - 如何修改此主题标签正则表达式以检查第二个字符是 a-z 还是 A-Z?

javascript - 在 Angular 中删除 JSON 对象

javascript - 算术运算符如何计算 JavaScript 中的无穷大值?

javascript - TinyMCE 吸收我的事件

asp.net - 可插拔/模块化开发 ASP.net MVC4

asp.net - 仅刷新另一个 UpdatePanel 内的 UpdatePanel