2010-12-14 141 views
2

林与asp.net 4.0框架工作,我有这样的代码:ASPX提交表单错误

形式的id = “form1的” RUNAT = “服务器” 的方法= “获取” 行动= “Profile.aspx”

// some code 

ASP:按钮RUNAT = “服务器” ID = “提交按钮” 文本= “提交”

每次我点击提交按钮我得到这个错误:

视图状态的

验证MAC失败。如果此应用程序由Web Farm或群集托管,请确保配置指定相同的验证密钥和验证算法。 AutoGenerate不能在群集中使用。

任何想法如何解决它?

+0

您是在Web场还是群集中运行此项目? – Oded 2010-12-14 08:55:35

+0

这里提到的任何前提条件是否符合?http://blogs.msdn.com/b/tom/archive/2008/03/14/validation-of-viewstate-mac-failed-error.aspx? – SWeko 2010-12-14 08:56:54

+0

@Oded .. no @Sweko:我检查了链接之前,它并没有帮助 – Grace 2010-12-14 08:58:16

回答

2

这是由跨页面POST引起的(即,您将第一页的ViewState提交到第二页)。您可以添加一项PostBackUrl到按钮这样的:

<asp:Button runat="server" ID="SubmitButton" Text="Submit" PostBackUrl="~/WebForm2.aspx" /> 

或者你可以处理在第一页按钮的点击事件,还可以将一些逻辑在此处理程序,并做了Response.Redirect的(即GET请求)到第二页。正确的解决方案取决于您的具体情况。

+0

我刚刚创建了一个javascript,并创建了一个新的窗体..并且我提交了新的窗体..我的工作...虐待现在尝试postbackurl。 .. – Grace 2010-12-14 09:46:07

1

如果您想将帖子发送回当前页面,请在form tag =“get”action =“Profile.aspx”属性中删除。并在你的页面处理隐藏的发布数据。

如果你想发送数据你的另一个页面,如Profile.aspx,使用按钮控件的PostBackUrl属性,如Stilgar为你写。然后在Profile.aspx代码隐藏以访问控制从当前页面使用somethink这样的:

If(Page.PreviousPage != null) 
{ 
    var textBox = Page.PreviousPage.FindControl("ControlID") as TextBox; 
    if(textBox != null) 
    { 
     //Use your logic here 
    } 
} 

希望这将是对你有帮助!

最好的问候,迪马。