首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >视图状态和TabPanel

视图状态和TabPanel
EN

Stack Overflow用户
提问于 2012-05-04 23:19:06
回答 1查看 738关注 0票数 1

在过去的6个月里,我一直在做一个asp.net项目,其中一个.aspx加载了不同的控件。这个页面和那些控件有他们自己的UpdatePanels,等等。换句话说,我必须处理一大堆视图状态的问题。似乎每当我认为我得到了视图状态和它的详细信息时,我就会得到下面将要描述的东西。这可能与控件状态有关,根据我的理解,“必要的”视图状态是不能关闭的。或者,这可能与AJAX有关。不管怎样,看看这个例子:

代码语言:javascript
复制
<%@ 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>

下面是用户控件的标记:

代码语言:javascript
复制
  <%@ 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在页面级被关闭,因此所有控件都不应该使用Viewstate。点击“第一个节点”。用户控件将加载两个选项卡。选择第二个选项卡。单击"Second Node“用户控件再次加载,"SECOND TAB”已被选中。

这是视图状态/控件状态的问题,还是与TabPanel的AJAX部分有关?

如果有人能告诉我这里发生了什么,以及我如何关闭这个功能,我真的很感激。

谢谢,迈克

EN

回答 1

Stack Overflow用户

发布于 2012-07-07 13:37:47

活动选项卡的值未存储在视图状态中。它似乎与ASP.NET AJAX框架有关,值是从post数据加载的。

要更改行为,可以从TabContainer派生并覆盖LoadClientState方法,这样ActiveTabIndex就不会改变。

您可以在codeplex上查看TabContainer的源代码:http://ajaxcontroltoolkit.codeplex.com/SourceControl/changeset/view/1014bf767f65#Server%2fAjaxControlToolkit%2fTabs%2fTabContainer.cs

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10451656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档