{Substitution:GetNonCachedData}
キャッシュされるべきではないデータを取得するような構文を使用するカスタム ページ キャッシュ ユーティリティを構築しています。ソリューションは組み込みのものと非常に似ています<@ OutputCache %>
が、それほど柔軟ではありません (必要ありません)。最も重要なことは、キャッシュされていないデータを取得するときにセッション状態を利用できるようにすることです。
とにかく、HTML のトークンを {Substitution} タグで指定された静的メソッドの結果に置き換えるメソッドがあります。
たとえば、私のページ:
<html>
<body>
<p>This is cached</p>
<p>This is not: {Substitution:GetCurrentTime}</p>
</body>
</html>
{Substitution:GetCurrentTime}
静的メソッドの結果を入力します。処理が行われる場所は次のとおりです。
private static Regex SubstitutionRegex = new Regex(@"{substitution:(?<method>\w+)}", RegexOptions.IgnoreCase);
public static string WriteTemplates(string template)
{
foreach (Match match in SubstitutionRegex.Matches(template))
{
var group = match.Groups["method"];
var method = group.Value;
var substitution = (string) typeof (Substitution).GetMethod(method).Invoke(null, null);
template = SubstitutionRegex.Replace()
}
return template;
}
変数template
は、置換する必要があるカスタム トークンを含む html です。この方法の問題はtemplate
、更新された html で変数を更新するたびに、変数に追加された文字が増えmatch.Index
たため、変数が正しい文字の開始点を指しなくなることです。template
文字数などをカウントするか、その他のスクリューボールの方法で機能するソリューションを思いつくことができますが、最初に、Regex オブジェクトでこれを実現する簡単な方法がないことを確認したいと思います。誰でもこれを行う方法を知っていますか?
ありがとう!