6

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が、行にNullReferenceExceptions が表示され@Includeます。

したがって、私の主な質問は次のとおりです。別の Razor ファイル (モデルを含む) をファイルに含めるより良い方法はありますか?

第二に、より良い方法がない場合、どうすれば HtmlHelper を作成できますか?


報奨金の編集:繰り返しますが、受け入れられる回答に必要な 4 つのことは次のとおりです。

  1. 標準エディターでファイルを編集する機能.cshtml(「文字列として保存」などはありません)
  2. 現在のビルド システムを使用して展開できる単一の dll にすべてをコンパイルする機能 (多数の個別の .cshtml を展開することはできません)
  3. 1 つの .cshtml ファイルを別の .cshtml ファイルから参照し、モデルを渡す機能 - またはと同等(動作する@Includes場合@Html.Partialはどちらも完全に受け入れられます)
  4. 添付ファイル付きで結果を電子メールで送信する機能。(結果が文字列であるか、文字列に変換可能な場合、このコードは既にあります。)

現在、これら 3 つのほとんどの組み合わせで機能しますが、4 つすべてを一度に取得することはできません。結果が必要に応じて機能する限り、私は新しいライブラリ、RazorGenerator の置き換え、または既に持っているものの一部の破棄にオープンです。

4

2 に答える 2

1

考えただけですが、なぜ他のページを設定できず、コントローラーコードで HTTPWebRequest / WebClient を開いて必要なデータを送信し、そのビューからすべての html/text を取得し、いくつかの呼び出しをまとめてからメールで送信できませんでしたか?その文字列をすべて出します。

public ActionResult SomeAction() {
  // call other section logic using HttpWebRequest or WebClient
  // /controller/emailsection/{vars}/......
  // Get the string out of the request add it to ViewData["xxx"]
  // rinse and repeat for other sections

}

public ActionResult EmailSection() {
  //put section logic here

  Response.ContentType = "text/html"; // "text/plain"
  Response.Write("Some HttpWebResponse");
  return null;
}
于 2012-10-25T19:01:23.163 に答える