【问题标题】:Getting a viewstate error on button click on Aspx page?在 Aspx 页面上单击按钮时出现视图状态错误?
【发布时间】:2012-02-21 17:18:15
【问题描述】:

我在 Asp.Net 中有一个网页,上面有一个按钮

<asp:Button ID="btnRecordHours" runat="server" Text="<%$ Resources:VolunteerDashboard,btnRecordHours%>"
CssClass="buttonGreen buttonWidth" OnClick="btnRecordHours_Click" />

在其OnClick 事件中,我附加了一个名为btnRecordHours_Click 的方法

protected void btnRecordHours_Click(object sender, EventArgs e)
{
     //Some Code
}

但是当我点击这个按钮时,我得到了以下错误:

加载视图状态失败。
视图状态所在的控制树 正在加载的必须与控制树匹配 在上一个请求期间用于保存视图状态。 例如,动态添加控件时,在回发期间添加的控件必须与在初始请求期间添加的控件的类型和位置相匹配。

它甚至无法在回发时直接点击Click 事件,直接显示此错误OnClick

Hyperlink 和其他一些按钮在此页面上工作正常,但某些按钮仍然存在此问题。

【问题讨论】:

  • 您是否在Page_LoadPage_PreRender 中动态地向页面添加任何控件?
  • 不,我们不会在 Page_Load 或 Page_PreRender 中动态添加控件
  • 您是否使用 jQuery 来更改表单上的任何(甚至是隐藏字段)值?
  • [前段时间我回答了一个类似的问题][1] 也许这会有所帮助[1]:stackoverflow.com/questions/3067024/failed-to-load-viewstate/…Goodluck Harv
  • 是的,在页面上我有很多隐藏字段,我正在使用 javascript 或 jquery 更改其值

标签: asp.net .net button controls webpage


【解决方案1】:

根据您的评论,我认为您遇到的问题与您拥有 asp:hiddenfields 并更改值有关。

尝试使用普通的html隐藏字段并使用Request.Form["nameofhiddenfield"]获取后面代码中的值。

请注意,您需要隐藏字段的名称,而不是 ID。

【讨论】:

  • 隐藏字段可能存在什么问题...我在许多其他页面上都使用相同的内容,但没有一个出现此类问题...。您能详细说明一下您的具体情况吗?想说...
  • 当您使用 asp:hiddenfield 时,它是一个服务器控件。 .NET viewstate 包含这些控件的状态,当这些控件的状态通过 .NET 方法发生变化时,它会将其视为潜在的黑客并给出您所看到的错误。
【解决方案2】:

您是否使用任何更新面板?因为有时使用它们会出现这些问题,尤其是在涉及多个更新面板的情况下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    相关资源
    最近更新 更多