Ich habe versucht, ein paar verschiedene Möglichkeiten, aber es funktioniert nicht aus irgendeinem Grund. Ist es überhaupt möglich?Können Sie mehrere VaryByCustom-Parameter beim Zwischenspeichern eines Benutzersteuerelements verwenden?
Antwort
Ja. Trennen Sie sie in Ihrer Deklaration durch Semikolons.
Wenn Sie GetVaryByCustomString() in der Datei Global.asax.cs überschreiben, können Sie eine durch Semikolon getrennte Liste von Werten übergeben, die Sie anschließend analysieren müssen.
Es gibt einen integrierten Wert (Browser), der verwendet wird, wenn das angegebene Attribut nicht existiert.
Technisch gesehen kann man jedoch, wenn man 'GetVaryByCustomString' überschreibt, die Zollliste nicht in irgendeinem Format passieren, da man ohnehin eine eigene Analyse durchführen muss? Oder wird es für einen Aufruf von "base.GetVaryByCustomString" in der überschriebenen Implementierung von Bedeutung sein? – bzlm
@bzlm 'base.GetVaryByCustomString' implementiert keine String-Splitting-Funktionen und wird nur etwas tun, wenn' browser' als Wert übergeben wird. Dies bedeutet, dass Sie ein beliebiges Zeichen als Trennzeichen auswählen können. – Richard
Technisch spielt das Trennzeichen keine Rolle. Microsoft empfiehlt jedoch, ein Semikolon in ihrer Dokumentation zu verwenden. Außerdem wird Semikolon automatisch für VaryByParam unterstützt und normalerweise ist es ratsam, bei einer Konvention zu bleiben, wenn eine definiert ist. –
Sie können mehrere Parameter verwenden, indem Sie sie durch ein Semikolon trennen, aber Sie müssen die Logik implementieren, sie selbst zu splitten. Dies bedeutet, dass Sie jedes Zeichen als Trennzeichen verwenden können, da Sie es selbst analysieren müssen.
Sie überschreiben wahrscheinlich GetVaryByCustomString(HttpContext context, string custom)
in Ihrem global.asax. Der custom
Parameter wird alles enthalten, die Sie VaryByCustom
Pass mit, wie diese
<%@ OutputCache Duration="86400" VaryByParam="none" VaryByCustom="custom1;custom2" %>
Zusätzliche Anmerkung: base.GetVaryByCustomString
keine String-Splitting-Funktionen implementieren und wird nur etwas tun, wenn browser
als Wert übergeben wird. Andernfalls wird null
zurückgegeben.
Wie unterscheidet sie sich durch Semikolon als Komma, Punkt oder irgendein anderes Sonderzeichen? – ozgur
Downvoted, weil die Verwendung eines Semikolons keine Unterstützung für mehrere Parameter bietet. Wenn Sie das möchten, sollten Sie es selbst implementieren. – Richard
Vereinbart mit @Richard; Dies gibt _not_ keine automatische Unterstützung. – PMah