2

2 つのユーザー コントロール ( Test1.ascxTest2.ascx ) があります。Test1.ascx には Test2.ascx が含まれています。

内部ユーザー コントロール ( Test2.ascx ) html は次のとおりです。

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Test2.ascx.cs"
Inherits="Test.UserControls.Test2" %>

<%@ OutputCache Duration="200" VaryByParam="None" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<telerik:RadTreeView runat="server" ID="radTreeView" >
<DataBindings>
    <telerik:RadTreeNodeBinding Depth="0" CssClass="rootNode" />
</DataBindings>
</telerik:RadTreeView>

外側のユーザー コントロール ( Test1.ascx ) html は次のようになります。

<div runat="server" id="divTreeViewContainer">
        <uc:ucTreeView runat="server" ID="ucTreeView" />
    </div>

ページが初めて要求されたとき、両方のユーザー コントロールが完全に読み込まれています。Test2.ascx のツリー ビューは、Test1.ascx の FindControl() によって次のようにアクセスされます。

  //Find the tree view from the Test2.ascx user control
  var radTreeView = ucTreeView.FindControl("radTreeView") as RadTreeView;

2 番目のページ リクエスト以降 (つまり、内部ユーザー コントロール Test2.ascx がキャッシュされた後) ucTreeViewnullになります。

要件: Test2.ascx ユーザー コントロールをキャッシュする必要があり、このユーザー コントロールのコントロール値は、Test1.ascx ユーザー コントロールで (キャッシュされた状態とキャッシュされていない状態の両方で) アクセスされます。どうやってするの?

よろしくお願いします。

4

0 に答える 0