ASP.NET MVC - 来自控制台应用程序的控制器操作方法

时间:2009-10-27 15:30:40

标签: asp.net-mvc asp.net-mvc-2

我想要一个控制台应用程序,我将用它来将输出呈现给文件。

伪代码:

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

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

我使用Tip # 25 from Stephen Walther的最接近的是:

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文件夹的不同位置,但没有运气。

有什么想法吗?谢谢!

2 个答案:

答案 0 :(得分:0)

在没有托管应用程序的情况下渲染内容会很棘手,因为没有HttpContext等。

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

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

答案 1 :(得分:0)

我不是一个尝试推荐除你要求之外的东西的人,但我同意Wyatt的说法,目标看起来有点粘性,最多会产生一些代码味道。如果您只需要将渲染的输出保存到文件中,我认为当您需要进行保存时,可能更容易从控制器获取调用的应用程序服务。在那种情况下,您可以访问当前的HttpContext,Routes等。

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

相关问题