如何从MVC操作中获取生成的HTML?

时间:2009-10-01 12:53:16

标签: asp.net-mvc

是否可以通过代码获取从操作输出的结果HTML?

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

具体说明为什么要查看MvcIntegrationTestFramework

它可以节省您编写自己的帮助程序以传输结果,并且已证明可以正常工作。我假设这将是一个测试项目,作为奖励,一旦你有这个设置,你将拥有其他测试功能。主要麻烦可能是整理依赖链。

 private static readonly string mvcAppPath = 
     Path.GetFullPath(AppDomain.CurrentDomain.BaseDirectory 
     + "\\..\\..\\..\\MyMvcApplication");
        private readonly AppHost appHost = new AppHost(mvcAppPath);

    [Test]
    public void Root_Url_Renders_Index_View()
    {
        appHost.SimulateBrowsingSession(browsingSession => {
            RequestResult result = browsingSession.ProcessRequest("");
            Assert.IsTrue(result.ResponseText.Contains("<!DOCTYPE html"));
        });
}

答案 2 :(得分:0)

以下是我在Razor语法中如何完成它的示例。我需要从一个动作中获取html作为另一个动作中的字符串(以PDF格式呈现为渲染)

 ViewResult viewResult = ActionYouWhatHtmlFrom(id);

       using (var writer = new StringWriter())
       {
           ViewEngineResult result = ViewEngines
                     .Engines
                     .FindView(ControllerContext,
                               viewResult.ViewName, "_YourLayout");


           var viewPath = ((RazorView)result.View).ViewPath;
           var layoutPath = ((RazorView) result.View).LayoutPath;

           var view = new RazorView(ControllerContext, viewPath, layoutPath, true, null);
           var viewCxt = new ViewContext(
                               ControllerContext,
                               view,
                               viewResult.ViewData,
                               viewResult.TempData, writer);
           viewCxt.View.Render(viewCxt, writer);