使用__doPostBack()进行回发时遇到错误

时间:2010-10-29 06:58:50

标签: c# javascript asp.net postback dopostback

我在回帖时遇到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

我无法理解为什么会出现这个错误。请帮助...

3 个答案:

答案 0 :(得分:2)

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

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

隐藏按钮后

你可以从javascript中调用它的点击功能

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

这将调用服务器上的Button1_Click

**请记住设置UseSubmitBehaviour=false以使其在非IE浏览器上运行

希望有所帮助:)

答案 1 :(得分:1)

默认情况下不会创建

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

ClientScript.GetPostBackEventReference(this, string.Empty);

此行将强制创建此方法。

答案 2 :(得分:-1)

默认情况下不会创建_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>

例如你的代码会起作用。 不知道它是否真的很有用:)但是。