【问题标题】:ASP.NET MVC2 - Render a View as a StringASP.NET MVC2 - 将视图呈现为字符串
【发布时间】:2010-04-30 17:09:47
【问题描述】:

如何在 MVC 2 中将视图呈现为来自控制器的字符串?

在 MVC 1 中,我使用了CaptureActionHtml。我和a similar question 有同样的问题,但是没有Rhink.Mocks 有没有办法做到这一点?

【问题讨论】:

  • 恕我直言:你不应该。您应该在ActionResult 中执行此操作,而不是在Controller 中。你想做什么?
  • 有什么区别?控制器中不是 ActionResult 吗?我正在尝试将视图用作电子邮件的模板。
  • 不,Controllers 和 ActionResults 是两种不同的类型。控制器实例化 ActionResults;控制器不实现 ActionResults 控制器根本不应该了解 HTML。这是总体思路:aboutcode.net/2009/01/19/EmailActionResultInASPNETMVC.aspx

标签: asp.net-mvc-2


【解决方案1】:

我发现Steve Sanderson's Integration Testing framework 可以很好地解决这个问题。

仔细阅读他自己的博客文章中的一个代码示例,您可以了解框架的功能、可以针对其输出执行的断言等:

[Test]
public void Root_Url_Renders_Index_View()
{
    appHost.SimulateBrowsingSession(browsingSession => {
        // Request the root URL
        RequestResult result = browsingSession.ProcessRequest("/");

        // You can make assertions about the ActionResult...
        var viewResult = (ViewResult) result.ActionExecutedContext.Result;
        Assert.AreEqual("Index", viewResult.ViewName);
        Assert.AreEqual("Welcome to ASP.NET MVC!", viewResult.ViewData["Message"]);

        // ... or you can make assertions about the rendered HTML
        Assert.IsTrue(result.ResponseText.Contains("<!DOCTYPE html"));
    });
}

【讨论】:

    猜你喜欢
    • 2016-10-10
    • 2015-08-02
    • 2011-01-28
    • 1970-01-01
    • 2011-06-23
    相关资源
    最近更新 更多