【问题标题】:Encountering Error when doing post-back using __doPostBack()使用 __doPostBack() 进行回发时遇到错误
【发布时间】:2026-01-22 12:15:01
【问题描述】:

我在回发时遇到 javascript 错误。代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Untitled Page</title>

    <script language="javascript" type="text/javascript">

function DoPostBack() 
{
    __doPostBack('Button2','My Argument');
}

    </script>

</head>
<body>
    <form id="form1" runat="server">
    <input type="button" id="Button2" value="Press me" onclick="DoPostBack()" />
    </form>
</body>
</html>

我收到以下错误:

Line: 13
Error: Object expected

我不明白为什么会出现这个错误。请帮忙...

【问题讨论】:

  • 请注意我使用的是 HTML 按钮...不是 asp.net 按钮
  • @Danil 是对的,_doPostback 不是什么神奇的隐形功能,它是由 ASP.NET 在服务器控件位于导致回发的页面上时创建的。你想在这里做什么?为什么不能做一个服务器端(asp.net)按钮?
  • @RPM1984 当前的编码风格无法在应用程序中更改,因为它在过去 7 年中一直在使用,我们现在必须遵循它,因此我们不能使用 asp.net 按钮.
  • 那么您必须按照@mahmoud 的建议进行“破解”。或者,如果您不需要特定的事件处理程序,只需使用 document.forms[0].submit() BTW - 那么在过去的 7 年中您是如何处理这个问题的?这里似乎有些可疑。

标签: c# javascript asp.net postback dopostback


【解决方案1】:

您可以使用隐藏按钮来执行此任务

Button1.Attributes.CssAttributes.Add("Display","None");

隐藏按钮后

你可以从javascript调用它的点击函数

document.getElementById('<%=Button1.ClientID%>').click();

这将在服务器上调用 Button1_Click

** 记得设置UseSubmitBehaviour=false 以使其在非 IE 浏览器上工作

希望有帮助:)

【讨论】:

    【解决方案2】:

    __doPostBack 默认不创建。如果页面没有导致回发的控件,则 ASP.NET 不会创建/生成此方法。 在您的情况下,您可以通过在 Page_Load 事件中添加以下行来强制 ASP.NET 生成 __doPostBack:

    ClientScript.GetPostBackEventReference(this, string.Empty);
    

    此行将强制创建此方法。

    【讨论】:

      【解决方案3】:

      _doPostBack 默认不创建。当您使用 autoPostBack=true 添加控件或添加一些带有按钮的网格时,它会出现。 因此,您的代码中没有生成 _doPostBack javascript。 如果你添加

      <asp:DropDownList ID="list" runat="server" AutoPostBack="true">
              <asp:ListItem Text="first"></asp:ListItem>
              <asp:ListItem Text="second"></asp:ListItem>
          </asp:DropDownList>
      

      例如,您的代码将起作用。 不知道它是否真的是有用的代码:) 但是。

      【讨论】:

        最近更新 更多