6


4

私がやろうとしているのは、さまざまなテンプレートを使用して電子メールコンテンツを生成することです。

私は、ASP.NET MVCがこれに適していると思います。 私のコントローラーはEメールに必要なデータを得て、どのビュー(テンプレート)をレンダリングするかを決定します。 (それは単なる差し込み印刷ではありません。条件付きブロック、foreachなどが必要です。)

これらのテンプレートをWebアプリケーションのファイルとしてではなくデータベースに格納できるようにしたいので、Webアプリケーション自体から新しいテンプレートを簡単に追加できます。

これは可能ですか? 私はWebFormsビューエンジンを使用できるようにしたいと思いますが、それが不可能な場合は他のビューエンジンを検討します。 型付きビ​​ューを使用したいのですが。

4 Answer


2


残念ながら、WebForms ViewEngineは、aspxファイルとascxファイルをコンパイルするためにいくつかの内部クラスを使用しているので、これは不可能です。 そのViewEngineは、ビューがサイトのルート内のフォルダ内のファイルとして利用可能であることを要求します(仮想フォルダもIIRCで動作します)。

XSLTを使用するものなど、目的に適したものが他にもあります。

同じアプリケーションに複数のViewEngineを混在させることは可能です。そのため、通常のWebページにはWebFormsエンジンを使用し、電子メールには別のWebフォームエンジンを使用できます。


2


同じアプリケーションで複数のビューエンジンを使用することができます。 フレームワークは、要求されたビューをレンダリングできるかどうかを各エンジンに確認します。 他の利用可能なビューエンジンについてはMvcContribをチェックしてください…​

前の回答で述べたように、WebフォームのViewEngineは、ビュー(aspx、ascx)がASP.NETと同じように物理的にファイルシステムに格納されていると想定しています(ASP.NETではhttp://のようなものがあります)。 msdn.microsoft.com/en-us/library/system.web.hosting.virtualpathprovider.aspx[VirtualPathProvider])であった - それは - もともとフレームワークに追加されたものです。 共有ポイント)。

独自のビューエンジンを作成したい場合は、IViewEngineを実装し、そのビューエンジンをViewEnginesコレクションに追加します。 Application_Startにあります。


1


Phil Haackの 素晴らしい記事は、ここに似たようなものです。

それはあなたのニーズに合わせられるかもしれないと思います。

親切、

ダン


0


あなたはあなたのviewengineそしてあなたのbuildmanagerを作成しなければなりません。 あなたのviewengineは単純にdbからaspx部分を取得してウェブフォームエンジンを呼び出すことができます。 簡単ではありませんが実行可能です、それはあなたがこれをどれほどひどく必要とするか、そしてそれがどのようにあなたに素晴らしいROIを与えるだろうかにかかっています。