1

我想要一个控制台应用程序,用于将输出呈现到文件中。

伪代码:

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

我在这里没有使用真正的代码,因为我尝试了不同的方法,但没有什么能让我靠近。

我使用Stephen Walther 的 Tip #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

由于没有 HttpContext 等,在没有将应用程序托管在某物的情况下,要渲染东西会很棘手。

现在,使用 WebRequest 从正在运行的应用程序版本中获取页面并将它们转储到磁盘更加可行。

最后,这听起来有点 FUBAR。这次行动的目标是什么?

于 2009-10-27T15:58:25.160 回答
0

除了你要求做的事情之外,我不是一个试图推荐其他东西的人,但我同意 Wyatt 的观点,这个目标似乎有点棘手,充其量只会产生一些代码气味。如果您只需要将渲染的输出保存到文件中,我认为在需要保存时调用应用服务会更容易,可能来自控制器。在那种情况下,您可以访问当前的 HttpContext、Routes 等。

如果它完全是一个单独的应用程序(控制台应用程序独立存在),那么从 Web 应用程序中设置一个服务,该服务具有控制台应用程序可以调用以检索呈现的输出的方法呢?

于 2009-10-27T16:36:52.007 回答