hereからEngine.Razorのlibを使用してC#で電子メールのテンプレートを生成しようとしています。しかし、私はそれらの主要な財産が何であるかを理解していないのですか? 私はこのEngine.Razor同じキーを使用して例外をスローする
emailBody = Engine.Razor.RunCompile(emailBodyText, "SomeKey", null, new { SomeVariable = 3 });
のようにそれを実行し、それが「SomeKey」と呼ばれるいくつかのキャッシュされたキーを生成ドキュメントによると!私は本当にこれが必要ない!しかし、それはパラメータで必要です。
しかし、私が持っている問題は、複数の電子メールを生成した後、そのキーがすでに生成されているという例外が発生するということです。だから私は電子メールを生成するたびに、またはこの図書館の使用についてここに何かを見逃していますか?
古いドキュメントでは.Parse(キーは必要ありません)が使用されていますが、Visual Studioでは非推奨となっています。
string result = Razor.Parse(template, new { Name = "World" });
私はこのメソッドを使用することを恐れていますが、動作します。
これは本当に混乱しています!電子メールテンプレートを生成するたびに、前とは異なるテンプレートが作成されます。例。私のユーザーがログインしてメールを生成して送信し、30秒後に別のメールを生成することがあります。このメールはモデル情報が異なるため、新しいテンプレートが必要になります。私があなたの答えを理解すれば、私はRunCompileを使うたびにtemplateKeyの名前に一意の識別子を使用する必要がありますか?例。 "templateKey" + DateTime.Now.ToString() – user1186050
これらすべてのテンプレートをキャッシュするのはちょっと無駄です! – user1186050
@ user1186050 - いいえ、間違って読んでいます。このように考えてみてください。文字列のモデル(名前と呼ぶ)をとる新しいユーザーの電子メールテンプレートがあります。一意の識別子とモデル値(Tommyと言うことができます)を持つ最初の項目、 'RunCompile'を呼び出します。次に、*その特定の電子メールテンプレート*を使用しなければならないときは、2番目のコマンド '.Run'を*異なるモデル値*(user1と言うことができます)で呼び出します。それぞれのテンプレートに対して 'RunCompile'を一度だけ呼び出します。それ以降は、一意のテンプレートIDに異なるモデル値で 'Run'を呼び出します。 – Tommy