私はあなたが
<%$ ZeusExpression:tokenname %>
のようなものに
{tokenname}
から、あなたの表記を変更することができれば、あなたが作成することを検討でき 私はあなたの質問に答えるてるかどうかわからないんだけど、...あなたのSystem.Web.Compilation.ExpressionBuilderただ...式を作成します。
あなたのコメントを読んだ後...
はExpressionBuilderのを使用して、現在のページへのアクセスを得るための他の方法があります。あなたはこの
public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
{
Type type1 = entry.DeclaringType;
PropertyDescriptor descriptor1 = TypeDescriptor.GetProperties(type1)[entry.PropertyInfo.Name];
CodeExpression[] expressionArray1 = new CodeExpression[1];
expressionArray1[0] = new CodePrimitiveExpression(entry.Expression.Trim());
return new CodeCastExpression(
descriptor1.PropertyType,
new CodeMethodInvokeExpression(
new CodeThisReferenceExpression(),
"GetData",
expressionArray1));
}
のようなものを実装することができ;-) MSDNからのサンプルだけビットを変更すると、ページのコードを想定したが、この
public object GetData(string token);
のような方法が含まれているこれは、Aとプレースホルダを置き換えますあなたはおそらく、単純化し、データへのアクセス(Aを「守る」ために、「ユーティリティメソッド」を使用して、この上ではるかに詳しく説明することができます。もちろん、この
(string)this.GetData("tokenname");
のように呼び出しますプロパティへのアクセス、特別なメソッドの使用、エラー処理など)。 (例えば)
(string)Utilities.GetData(this, "tokenname");
・ホープ、このことができますと代わりに置き換え
何か。私は正規表現を使用して、複数の異なるタグのページの内容を解析された以外、this pageあたりとしてレンダリング機能をオーバーライド
- この質問に貢献しているものに
これは非常に興味深い解決策です。入力のためにありがとう:) 問題現在のページから表現ビルダーに物事を渡すことができるかどうかわからない、置換テキストをレンダリングするために現在のページからデータが必要ですか? 私はちょうど解決策を実際に見つけました...おそらく、他人が疑問に思うような場合に私自身の質問に答えるべきです。 – RYFN
はい、あなた自身の解決策を提示する必要があります。とにかく私はあなたの懸案事項のいくつかに答えるように私の提案を編集しました。 –