2017-07-02 14 views
0

ナビゲーション用のサイドバーとして使用するMasterpageを持っていました。各ユーザーが独自のナビゲーションメニューを持つため、サイドバーのユーザーコントロールを作成しました。フラグメントasp.net webformでユーザーコントロールをキャッシュMasterpage

私のUserMenu内では、Infragistic webexplorerとIamを使用して、データベースからのado.net結果を動的に使用してwebexplorerの各項目を作成します。

高帯域幅ですべてうまく動作しますが、低帯域幅では、メニューバーがロードされるまでに3〜4秒かかります。各ポストバックでユーザーが待つ時間が非常に長くなります。

だから私は、私はあなたが私が

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DynamicMenuBar.ascx.cs" Inherits="ArtWebApp.DynamicMenuBar" %> 
<%@ Register assembly="Infragistics35.Web.v12.1, Version=12.1.20121.2236, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb" namespace="Infragistics.Web.UI.NavigationControls" tagprefix="ig" %> 
<%@ OutputCache Duration="600" VaryByParam="none" %> 
<ig:WebExplorerBar ID="WebExplorerBar1" runat="server" Width="250px"> 
</ig:WebExplorerBar> 

た.ascx私のUserControlで

<div> 
    //this is my usercontrol 
         <uc1:DynamicMenuBar runat="server" id="DynamicMenuBar" /> 
    </div>  
    <div id="main" class="content" > 

     <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> 
        <div class="bodybackground"> 
        </div> 

       </asp:ContentPlaceHolder> 
    </div> 

をしたマスターページで

私はいただきました間違っ示唆working.canないようです.but断片のキャッシュを試してみましたが、私のusercontrol .ascx.csで私は以下を行った。

public partial class DynamicMenuBar : System.Web.UI.UserControl 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       loadexplorerebar(); //this function creates the groups and childs based on the database result dynamically 
       this.WebExplorerBar1.EnableViewState = true; 
      } 
     } 

答えて

0

インターネットに問題があるようです。メニュー取得のためにサーバーコードの代わりにAJAX呼び出しを使用してください。

1

私は、ucがキャッシュされていてもPage_Loadが呼び出されると思います。 loadexplorerebar()を呼び出す前にキャッシュ内にあるかどうかを調べてみてください。それがキャッシュにない場合はnullになります。

ので変更してみてください:

if (!IsPostBack) 

へ:

if (!IsPostBack && WebExplorerBar1 == null) 
関連する問題