RazorGeneratorをメール テンプレート エンジンとして使用しようとしています。データを含むモデルを取得し、正しい部分ビューのセットを組み立てて、電子メールで送信できる HTML を返したいと考えています。
編集:このワークフローに加えて、ソリューションは .cshtml ファイルとして編集可能であり、 dll にコンパイルできる必要があります。さまざまな理由から、cshtml ファイル自体を展開することは現実的ではありません。すべてのカミソリ ビューを 1 つのファイルに埋め込むことができない場合、その提案を使用することはできません。したがって、RazorGenerator.
これまでのところ、パーシャルを除くすべての部分を解決しました。テンプレート ファイルで @Html.Partial() を使用しようとすると、次のようになりますThe name 'Html' does not exist in the current context
。
この回答に基づいて、デフォルトでは Razor の一部ではないことを知っています。コントローラーで@Html
を作成する方法については、多くの回答があります。ただし、テンプレートで作成する必要があります。テンプレートには、これらの例に従う必要があるというもの HtmlHelper
はありません。ControllerContext
@Include も使用してみましたが、RazorGenerator テンプレートはそれをサポートしていないようです。 編集:のすべての機能を継承しTemplateBase<>
てコピーした新しいクラスを作成しようとしましたRazorTemplateBase
が、行にNullReferenceException
s が表示され@Include
ます。
したがって、私の主な質問は次のとおりです。別の Razor ファイル (モデルを含む) をファイルに含めるより良い方法はありますか?
第二に、より良い方法がない場合、どうすれば HtmlHelper を作成できますか?
報奨金の編集:繰り返しますが、受け入れられる回答に必要な 4 つのことは次のとおりです。
- 標準エディターでファイルを編集する機能
.cshtml
(「文字列として保存」などはありません) - 現在のビルド システムを使用して展開できる単一の dll にすべてをコンパイルする機能 (多数の個別の .cshtml を展開することはできません)
- 1 つの .cshtml ファイルを別の .cshtml ファイルから参照し、モデルを渡す機能 - またはと同等(動作する
@Includes
場合@Html.Partial
はどちらも完全に受け入れられます) - 添付ファイル付きで結果を電子メールで送信する機能。(結果が文字列であるか、文字列に変換可能な場合、このコードは既にあります。)
現在、これら 3 つのほとんどの組み合わせで機能しますが、4 つすべてを一度に取得することはできません。結果が必要に応じて機能する限り、私は新しいライブラリ、RazorGenerator の置き換え、または既に持っているものの一部の破棄にオープンです。