2010-03-28 8 views
5

Vorrei utilizzare la funzionalità di sostituzione della cache ciambella.ASP .NET - Caching di output e di pagina (ciambella) - Come passare l'argomento personalizzato a HttpResponseSubstitutionData delegata

public static string GetTime(HttpContext context) 
{ 
    return DateTime.Now.ToString("T"); 
} 

...

The cached time is: <%= DateTime.Now.ToString("T") %> 
<hr /> 
The substitution time is: 
<% Response.WriteSubstitution(GetTime); %> 

... Ma vorrei passare parametro aggiuntivo di callback funzione accanto HttpContext.
quindi la domanda è:
Come passare argomenti aggiuntivi al callback GetTime?
per esempio, qualcosa di simile:

public static string GetTime(HttpContext context, int newArgument) 
{ 
    // i'd like to get sth from DB by newArgument 
    // return data depending on the db values 

    // ... this example is too simple for my usage 
    if (newArgument == 1) 
     return ""; 
    else 
     return DateTime.Now.ToString("T"); 
} 
+1

Quindi la risposta che cercavo è: NON PUO 'ESSERE FATTO :) Problema nella mia situazione è che sto dinamicamente inserendo più controlli POLL (> = 0) sulla pagina e voglio rendere ogni controllo basato sugli argomenti (UserID e PollID. se l'utente ha già votato, ci devono essere risultati del sondaggio invece del modulo di voto, per ciascun controllo). Quindi non posso definire diverse funzioni. Alla fine ho usato una chiamata ajax per recuperare i risultati per ciascuno dei sondaggi votati su $ (document) .ready event. Ma speravo in una soluzione migliore ... Grazie a tutti per il vostro aiuto – zzare

risposta

2

Altrimenti, se il tuo problema è che vuoi avere output diversi basati su argomenti diversi perché stai usando la sostituzione dell'output in diversi punti del tuo sito web, temo che l'unico modo sia definire funzioni diverse o utilizzare solo i metodi di sostituzione come stub per il metodo effettivo con argomenti.

1

Beh, è ​​possibile memorizzare qualsiasi argomento che serve in sessione. Nel metodo GetTime, è possibile accedere a questi argomenti tramite HttpContext.

+0

La 'Sessione' non è disponibile quando si utilizza il controllo' Sostituzione '. È elencato nell'istanza 'Context', ma è sempre nullo quando si trova in un metodo di call-back statico in quanto non viene mai inizializzato e caricato quando chiamato tramite la funzione Sostituzione. –

Problemi correlati