簡體   English   中英

具有UpdatePanel的無效ViewState

[英]Invalid ViewState with UpdatePanel

(我在帶有開發Web服務器的Visual Studio 2008(ASP:NET 3.5)上運行)

我有一個asp.net頁面,其中:

UpdatePanel中有一個SliderExtender控件。

服務器端我正在捕獲滑塊的Changed事件。

用戶可以更改滑塊值,一切正常。

問題

用戶可以使用箭頭更改滑塊的值,但是當他將箭頭向下放置一會兒時,將引發“ Invalid ViewState ”異常。

Invalid viewstate. 
Client IP: 127.0.0.1
Port: 
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8; .NET4.0C; .NET4.0E)
ViewState: /wEPDwXJja...

我已經嘗試在Chrome上使用IE8並獲得相同的結果。

我知道發生這種情況的原因是,服務器端的Changed方法被Changed調用,並且隨着傳入調用超過服務器處理速度的時刻到來了。

問題

如何避免發生此問題?

我嘗試了什么?

  • 關於這個問題的最受歡迎的建議。
  • 覆蓋頁面渲染以將ViewState放在頂部。
  • 穩定一個ViewStateUserKey。
  • 禁用表格直到窗口加載。
  • 設置機器密鑰。

編輯

這是代碼:

<asp:TextBox runat="server" ID="txtSlider" AutoPostBack="true" Text="100" OnTextChanged="txtSlider_TextChanged"></asp:TextBox>
<asp:SliderExtender ID="sldSlider" Decimals="0" TargetControlID="txtSlider" Length="50" 
            BoundControlID="lblProporcion" runat="server" Minimum="0" Maximum="100" >
        </asp:SliderExtender>

protected void txtSlider_TextChanged(object sender, EventArgs e)
{            
    //Server processing, UpdatePanel's update....
}

當用戶移動滑塊以更改其值時,txtSlider的text屬性將對其進行更改,從而引發txtSlider_TextChanged事件。 我想我可以使用HiddenField來存儲上次回發,並在客戶端使用它來定義txtSlider是否回發(如果至少經過了500ms,則繼續進行回發)。

我正在嘗試最后一種方法,如果我設法解決此問題,我會通知您。

我不再有這個問題,但我也沒有解決這個問題。 我正在捕獲無效的ViewState異常,因此用戶不會注意到任何問題,並且一切都會順利進行。

我正在global.asax上執行此操作:

protected void Application_Error(object sender, EventArgs e)
{
    Exception exc = HttpContext.Current.Server.GetLastError().InnerException;
    if (exc != null)
    {
        //register the exception on error log table
    }
}

如果有人對這個問題發表真正的答案,我會立即取消標記。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM