2012-05-04 68 views
1

我一直在研究一個asp.net項目,歷時約6個月,這是一個.aspx正在加載不同的控制。這個頁面和那些控件有自己的UpdatePanel等等。換句話說,我不得不處理一堆視圖狀態問題。這似乎是每當我認爲我完全得到視圖狀態和它的細節時,我就會得到類似於我將在下面描述的內容。這可能與控制狀態有關,這是來自我所理解的「必要」視圖狀態,您無法關閉。或者這可能需要對AJAX做些什麼。 反正看看這個例子:Viewstate和TabPanel

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" EnableViewState="false" Inherits="ControlDisabledViewStateTesting._Default" %> 
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajx" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title></title> 
    <script language="C#" runat="server"> 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (treeView.SelectedNode != null) 
       ContentPanel.Controls.Add(ContentPanel.TemplateControl.LoadControl("MyUserControl.ascx")); 
     } 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div>  
     <ajx:ToolkitScriptManager runat="server" />  
     <asp:TreeView ID="treeView" runat="server"> 
      <Nodes> 
       <asp:TreeNode Text="First Node" Value="111"/> 
       <asp:TreeNode Text="Second Node" Value="222"/> 
      </Nodes> 
     </asp:TreeView>   
     <Asp:Panel ID="ContentPanel" runat="server" /> 
    </div> 
    </form> 
</body> 
</html> 

這裏是用戶控制標記:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MyUserControl.ascx.cs" Inherits="ControlDisabledViewStateTesting.MyUserControl" %> 
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajx" %> 
<ajx:TabContainer ID="tabContainer" ActiveTabIndex="0" runat="server"> 
    <ajx:TabPanel ID="tab" HeaderText="Tab1" runat="server"/>    
    <ajx:TabPanel ID="tab2" HeaderText="Tab2" runat="server" />    
</ajx:TabContainer> 

正如您已經注意到,視圖狀態是關閉頁面的水平,所以沒有的控件應該使用viewstate。 點擊「第一個節點」。 用戶控件被載入兩個選項卡。 選擇第二個選項卡。 單擊「第二個節點」 用戶控件再次加載,並且已選擇「SECOND TAB」。

這是viewstate/controlstate問題還是它與TabPanel的AJAX部分有關?

我真的很感激,如果有人可以闡明這裏發生的事情以及我如何關閉此功能。

謝謝, 麥克

回答