C# 如何使用Javascript将控制转移到ASPX页面

C# 如何使用Javascript将控制转移到ASPX页面,c#,javascript,asp.net,C#,Javascript,Asp.net,我编写了一个登录表单,调用WebMethod进行身份验证。这部分工作正常 如果用户已经过身份验证,我想使用javascript将控制权转移到另一个表单。以下是我的代码: var f = document.getElementById("form1"); f.action = "http://localhost/demo/WebForm2.aspx"; f.method = "POST"; f.subm

我编写了一个登录表单,调用WebMethod进行身份验证。这部分工作正常

如果用户已经过身份验证,我想使用javascript将控制权转移到另一个表单。以下是我的代码:

            var f = document.getElementById("form1");
            f.action = "http://localhost/demo/WebForm2.aspx";
            f.method = "POST";
            f.submit();
我得到以下例外情况:

[ViewStateException: Invalid viewstate. 
Client IP: 127.0.0.1
Port: 2614
Referer: http://localhost/demo/authenticate.aspx
Path: /demo/WebForm2.aspx
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
ViewState: /wEPDwUJNzgzNDMwNTMzZGRVwSzsPTf15ks/Fy9lgs6EmnjDEeWgjaAnQ01MZDLGJg==]

有人知道我做错了什么吗?

发生此错误是因为接收回发的页面试图使用Viewstate数据填充页面it属性,但它无效,因为Viewstate是由另一个页面创建的

如果不需要,您可以禁用viewstate,这将解决您的问题

private void Page_Init(object sender, System.EventArgs e)
{
    ...

    this.EnableViewState = false;

    ...
}
这将使您自己处理表单post变量,而不是像asp.net回发中一样,由viewstate数据填充页面变量

编辑:


viewstate
是一个可序列化的数据,表示呈现前的页面状态。在将数据发布回服务器后,它对于填充页面中的属性非常有用,这样当您访问这些属性时,就会显示您不是在客户机-服务器环境中工作
Viewstate
是asp.net体系结构中的一个可怕的黑客。如果在asp.net页面类中设置了大量属性,则viewstate会增加开销,因此应小心使用viewstate。

问题在于u viewstate字段。ASP.NET尝试验证uu ViewState内容,当您更改客户端上的目标时,会混淆它。本页详细描述了该做什么:

你说的“传输控制”是什么意思?假设你真的有一个名为“form1”的表单,你的JavaScript看起来还可以,等等。哪一行给出了异常?没错!非常感谢你。我已经为此挣扎了一天多了。再次感谢。