1

出力をファイルにレンダリングするために使用するコンソール アプリケーションが必要です。

擬似コード:

ComponentBaseController controller = new ComponentBaseController();
SaveToFile("output.html", controller.Result);

さまざまなアプローチを試したので、ここでは実際のコードを使用していませんが、何も近づきません。

Stephen Walther からのヒント # 25を使用して得た最も近いものは次のとおりです。

ComponentBaseController controller = new ComponentBaseController();

RouteData routeData = new RouteData();
routeData.Values.Add("controller", "ComponentBase");

var fakeContext = new FakeControllerContext(controller, routeData);

var result = controller.Details("klasta7") as PartialViewResult;
result.ExecuteResult(fakeContext);
Console.Write(fakeContext.HttpContext.Response.ToString());

これにより、部分ビューが見つからないという System.InvalidOperationException がスローされます。Views フォルダーの別の場所を試してみましたが、うまくいきませんでした。

何か案は?ありがとう!

4

2 に答える 2

0

私は、あなたが求めていること以外のことを勧めようとする人ではありませんが、Wyatt の意見には同意します。目標は少し厄介なようで、せいぜいコードの匂いがする程度です。レンダリングされた出力を単にファイルに保存する必要がある場合は、おそらくコントローラーから、保存を行う必要があるときに呼び出されるアプリ サービスを使用する方が簡単だと思います。その場合、現在の HttpContext、ルートなどにアクセスできます。

それがまったく別のアプリである場合 (コンソール アプリは独自に存在します)、レンダリングされた出力を取得するためにコンソール アプリが呼び出すことができるメソッドを持つ Web アプリ内からサービスをセットアップするのはどうでしょうか?

于 2009-10-27T16:36:52.007 に答える
0

HttpContext などがないため、何かでアプリをホストせずにレンダリングするものを取得するのは難しいでしょう。

これで、WebRequest を使用して実行中のバージョンのアプリからページを取得し、それらをディスクにダンプすることが、もう少し実行可能になりました。

最後に、これは少し FUBAR に聞こえます。この操作の目的は何ですか?

于 2009-10-27T15:58:25.160 に答える