3

我需要从 JavaScript 调用一些 codeBehind 函数。为此,我有一个隐藏按钮 ( asp:Button)。

当我从 javaScript 中单击此按钮时,例如:

var btn = document.getElementById("btnHidden");
btn.click(); 

我收到一个错误:

System.Web.HttpException: The state information is invalid for this page and might be corrupted. 

请你帮助我好吗?

4

4 回答 4

2

我试过这样并且正在工作

aspx

<head runat="server">
    <title>Untitled Page</title>
    <script language="javascript" type="text/javascript">
        function btnClick()
        {
            alert("clicked!!!");

            var btn=document.getElementById('<%=Button1.ClientID%>');
            btn.click();
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        test page
        <input type="button" id="btn" onclick="btnClick()" value="Click" />

        <asp:Button ID="Button1" style="display:none" runat="server" Text="Button" OnClick="Button1_Click" />

    </div>
    </form>
</body>

aspx.cs

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {

    }
}

在第一个按钮客户端单击中,我尝试引发第二个按钮单击事件。

于 2012-12-26T12:13:25.720 回答
1

首先你必须用css而不是服务器端隐藏这个按钮,我的意思是display:none不是Visible=false;

像这样 :

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

那么你应该使用ClientID

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

尝试设置UseSubmitBehaviour=false按钮

希望这可以帮助

于 2012-12-26T12:05:18.533 回答
0

您可以编辑您的 Web.config 文件:

<pages validateRequest="false" enableEventValidation="false" viewStateEncryptionMode ="Never"> 

查看此博客了解详细信息。

于 2012-12-26T12:04:06.967 回答
0

应该是这样的

var btn = document.getElementById('<%= btnHidden.ClientID %>').value;

于 2012-12-26T12:05:38.827 回答