저는 지난 6 개월 동안 asp.net 프로젝트에서 작업했습니다.이 컨트롤은 다른 컨트롤로로드 된 .aspx 파일이었습니다. 이 페이지와 컨트롤에는 자체 UpdatePanels 등이있었습니다. 즉, viewstate 문제의 가방을 처리해야했습니다. 내가 viewstate와 그 세부 사항을 완전하게 얻는다라고 생각할 때마다 나는 내가 아래에서 기술 할 것 인 무엇인가 얻는 것처럼 보인다. 이것은 제어 상태와 관련이있을 수 있습니다. 제어 상태는 내가 "필요한"viewstate를 이해할 때부터 해제 할 수 없기 때문입니다. 아니면 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가이 페이지 수준에서 너무 아무것도 해제하지 않습니다 컨트롤은 viewstate를 사용해야합니다. "첫 번째 노드"를 클릭하십시오. 사용자 정의 컨트롤에는 두 개의 탭이로드됩니다. 두 번째 탭을 선택하십시오. "두 번째 노드"를 클릭하십시오 "두 번째 탭"이 이미 선택되어있는 상태에서 사용자 컨트롤이 다시로드됩니다.
viewstate/controlstate에 문제가 있습니까? 아니면 TabPanel의 AJAX 부분과 관련이 있습니까?
누군가가 여기에서 무슨 일이 일어나고 있는지, 내가 어떻게이 기능을 끌 수 있는지에 관해 알려주면 정말 고맙습니다.
덕분 마이크