8

MyNamespace.Services と MyNamespace.Web の 2 つのプロジェクトを使用したソリューションがあります。

Web には MVC Web アプリケーションが含まれています。

Service プロジェクトには、ユーザーへのメール送信を処理する EmailService クラスがあります。

電子メール テンプレートに部分またはビュー (ascx または aspx) を使用したいと考えています。テンプレートが Web プロジェクト内にある場合 (電子メール サービスを呼び出す Web プロジェクトのコントローラーであるため)、部分ビューをレンダリングし、結果を文字列として取得する方法についていくつかの解決策を見つけました。

(私が使用しようとしている 2 つの方法は、 http: //developersisland.blogspot.com/2009/01/renderpartial-to-string-in-aspnet-mvc.html (ブログの下部) またはhttp:/ /www.brightmix.com/blog/how-to-renderpartial-to-string-in-asp-net-mvc/ )

しかし、私の電子メール テンプレートは Services プロジェクトにあります。

仮想パスをパラメーターとして受け取る LoadControl または RenderPartial のいずれかで動作する、Web プロジェクト内からサービス プロジェクトのテンプレート (部分/ビュー) へのパスを参照するにはどうすればよいですか?

何をしても、ルート ディレクトリが Web プロジェクト ディレクトリに設定されているようです。

出来ますか ?

どうにかして Web プロジェクトとは独立して動作させることができるといいですね。

4

4 に答える 4

2

独自のビューエンジンを開発しなければ、これは不可能だと思います。デフォルトのビューエンジンは、現在のビューフォルダーと共有ビューフォルダーを含む部分ビューの特定の場所のみを検索します。これらのビューはビューエンジンに登録されていないため、現在のプロジェクト以外のビューを検索することはできないと思います。

于 2009-04-26T00:19:53.930 に答える
2

電子メールをレンダリングして文字列として返す HTML ヘルパーを作成することを検討できます。

部分ビューか、HTML で文字列を返すメソッドかは問題ではありません。私は実際にあなたのケースではヘルパーメソッドがより良い選択だと思います.

単純なヘルパー メソッドは、使用方法においてもより柔軟です。

于 2009-05-15T12:55:06.000 に答える
1

カスタムビューエンジンロケーターまたは仮想パスプロバイダーを作成してみてください。これがあなたが始めるのを助けるかもしれないいくつかの例です:

于 2009-04-26T00:37:20.143 に答える
1

上記のリンクはすべて適切です。これも役立つ場合があります。ビューを見つけて使用するためにそれを取得することができます。私が抱えていた問題は、彼らとの共同作業にあり、他のプロジェクトにはコード補完などがありませんでした。プロジェクトファイルをいじることでそれを取得することもある程度可能でしたが、正直なところ、上記のグループ化ソリューションを使用することになりました

ASP.NET MVC のプラグイン アーキテクチャ

于 2009-05-15T12:45:47.927 に答える