2017-07-02 2 views
0

Ich hatte eine Masterpage, die als Sidebar für die Navigation verwendet. Ich erstellte ein Benutzersteuerelement für diese Sidebar, da jeder Benutzer ihre eigene Reihe von Navigationsmenüs haben.Fragment Cache ein Benutzersteuerelement in asp.net Webformular Masterpage

In meinem UserMenu verwende ich Infragistic webexplorer und Iam erstellt jedes Element von webexplorer mit ado.net Ergebnis aus der Datenbank dynamisch.

Alles funktioniert gut. In hoher Bandbreite, aber in geringer Bandbreite dauert es 3-4 Sekunden für die Menüleiste zu laden. Benutzer auf so viel warten auf jeden Postback.

Also habe ich versucht Fragment Caching .but ich Sie mir scheint nicht working.can vorschlagen, was falsch

In MasterpaDE ich

tat
<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> 

In meinem Usercontrol

.ascx
<%@ 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> 

Und In meinem usercontrol .ascx.cs hatte ich die folgende

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; 
      } 
     } 
getan

Antwort

0

Es scheint das Internetproblem zu sein. Versuchen Sie AJAX-Aufruf anstelle von Server-Code für Menüabruf

1

Ich glaube, Page_Load wird immer noch aufgerufen, auch wenn die UC zwischengespeichert wird. Versuchen Sie, vor dem Aufruf von loadexplorerebar() zu überprüfen, ob es sich im Cache befindet. Es ist null, wenn es nicht im Cache ist.

versuchen So verändert sich:

if (!IsPostBack) 

zu:

if (!IsPostBack && WebExplorerBar1 == null) 
Verwandte Themen