【问题标题】:aspx submit form erroraspx 提交表单错误
【发布时间】:2011-05-25 03:42:29
【问题描述】:

我正在使用 asp.net 框架 4.0,我有这个代码:

form id="form1" runat="server" method="get" action="Profile.aspx"

 // some code

asp:Button runat="server" ID="SubmitButton" Text="Submit"

每次单击提交按钮时都会出现此错误:

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

知道怎么解决吗???

【问题讨论】:

  • 您是在网络场还是集群中运行它?
  • 这里提到的前提条件blogs.msdn.com/b/tom/archive/2008/03/14/…满足了吗?
  • @Oded.. 没有@Sweko:我之前检查过链接,但对我没有帮助
  • 您是否通过 javascript 更改任何表单值?特别是 __viewstate 隐藏表单域?
  • 您是否有机会提交到与表单所在页面不同的页面 (Profile.aspx)?

标签: c# asp.net


【解决方案1】:

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

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

或者,您可以处理第一页中按钮的单击事件,移动此处理程序中的一些逻辑并执行 Response.Redirect(即 GET 请求)到第二页。正确的解决方案取决于您的具体情况。

【讨论】:

  • 我刚刚创建了一个 javascript 并创建了一个新表单..我提交了新表单..它有效...现在试试 postbackurl...
【解决方案2】:

如果您想将帖子发送回您的当前页面,请在表单标签中删除 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
    }
}

希望对你有所帮助!

最好的问候,迪玛。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-17
    • 2014-12-22
    • 2019-03-12
    • 2014-05-25
    • 2013-12-26
    • 2015-05-15
    • 1970-01-01
    相关资源
    最近更新 更多