我正在使用asp.net framework 4.0,我有这个代码:
form id =“form1”runat =“server”method =“get”action =“Profile.aspx”
// some code
asp:Button runat =“server”ID =“SubmitButton”Text =“Submit”
每次我点击提交按钮我都会收到此错误:
对viewstate MAC的验证失败。如果此应用程序由Web场或群集托管,请确保配置指定相同的validationKey和验证算法。 AutoGenerate无法在群集中使用。
任何想法如何解决它?
答案 0 :(得分:2)
这是由跨页POST引起的(即您将第一页的ViewState提交到第二页)。您可以将PostBackUrl添加到按钮中,如下所示:
<asp:Button runat="server" ID="SubmitButton" Text="Submit" PostBackUrl="~/WebForm2.aspx" />
或者,您可以在第一页中处理按钮的click事件,移动此处理程序中的一些逻辑并对第二页执行Response.Redirect(即GET请求)。正确的解决方案取决于您的具体情况。
答案 1 :(得分:1)
如果您要将帖子发送回当前页面,请在表单标记中删除method =“get”action =“Profile.aspx”属性。并处理来自您网页的代码隐藏帖子数据。
如果你想在另一个页面上发送数据,比如Profile.aspx,请使用按钮控件的PostBackUrl属性,比如 Stilgar 为你写的。然后在Profile.aspx代码隐藏中从当前页面访问控件使用这样的一些想法:
If(Page.PreviousPage != null)
{
var textBox = Page.PreviousPage.FindControl("ControlID") as TextBox;
if(textBox != null)
{
//Use your logic here
}
}
希望它对你有所帮助!
最好的问候,迪马。