通过javaScript单击按钮来调用代码Behind函数时出错

时间:2012-12-26 11:59:13

标签: javascript asp.net code-behind

我需要从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 个答案:

答案 0 :(得分: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)
    {

    }
}

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

答案 1 :(得分:1)

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

像这样:

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

然后你应该使用ClientID

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

尝试在按钮上设置UseSubmitBehaviour=false

希望这会有所帮助

答案 2 :(得分:0)

您可以编辑Web.config文件:

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

查看此blog了解详情。

答案 3 :(得分:0)

应该是这样的,

var btn = document.getElementById('&lt;%= btnHidden.ClientID%&gt;')。value;