Lo UC con dentro il calendario:
ASPX
codice:
<%@ Control Language="vb" AutoEventWireup="false" Codebehind="cachedCalendar.ascx.vb" Inherits="studio.cachedCalendar" %>
<%@ OutputCache Duration="60" VaryByControl="cal" %>
<asp:Calendar ID="cal" Runat="server"></asp:Calendar>
VB
codice:
Protected WithEvents cal As System.Web.UI.WebControls.Calendar
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Inserire qui il codice utente necessario per inizializzare la pagina
End Sub
Private Sub cal_DayRender(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DayRenderEventArgs) Handles cal.DayRender
' La prima volta visualizza in rosso il giorno corrente
If Not IsPostBack Then
If e.Day.IsToday Then
e.Cell.BackColor = Color.Red
End If
Else ' Dalla seconda volta visualizza in rosso il giorno 3 (del mese corrente)
If e.Day.Date.Day = 3 And Not e.Day.IsOtherMonth Then
e.Cell.BackColor = Color.Red
End If
End If
End Sub
La pagina che lo ospita:
codice:
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="statoCalendario.aspx.vb" Inherits="studio.statoCalendario"%>
<%@ Register TagPrefix="Custom" TagName="CalendarioCache" Src="cachedCalendar.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>statoCalendario</title>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<Custom:CalendarioCache id="CalendarioCache1" runat="server"></Custom:CalendarioCache>
<asp:Button ID="bt" Runat="server" Text="Postback"></asp:Button>
</form>
</body>
</HTML>
Ed il caching per 60 secondi funziona, errore JS a parte che credo sia qualcosa che non va sul mio PC.
Qualcuno si ricorda esattamente come funziona la direttiva VaryByControl, per far produrre una versione diversa della pagina in cache, agendo su un determinato controllo designato a cambiarla ?
Ho provato, come si vede, mettendo VaryByControl="cal" nello UC ma non reagisce (dovrebbe colorare il giorno 3 invece che l'1)