gpt4 book ai didi

c# - 如何将 ASP.NET MVC ViewResult 呈现为 HTML?

转载 作者:太空狗 更新时间:2023-10-30 00:44:45 25 4
gpt4 key购买 nike

在测试情况下,我希望能够使用默认的 viewEngine 将给定的 ViewResult 呈现为 HTML。

目前,我的 View 是基于 WebForms 的。但有时我可能会有 Spark 或 Razor View 。现在,我想专注于 WebForms。我可以从测试中呈现我的观点吗?

最佳答案

这是一个可以让您将 ViewResult 呈现为字符串的方法。在您的上下文中使用它的唯一棘手部分是模拟一个可行的 ControllerContext。

static string RenderPartialViewToString(ControllerContext context, ViewResultBase partialViewResult)
{
Require.ThatArgument(partialViewResult != null);
Require.That(context != null);
using (var sw = new StringWriter())
{
if (string.IsNullOrEmpty(partialViewResult.ViewName))
{
partialViewResult.ViewName = context.RouteData.GetRequiredString("action");
}
ViewEngineResult result = null;
if (partialViewResult.View == null)
{
result = partialViewResult.ViewEngineCollection.FindPartialView(context, partialViewResult.ViewName);
if(result.View == null)
throw new InvalidOperationException(
"Unable to find view. Searched in: " +
string.Join(",", result.SearchedLocations));
partialViewResult.View = result.View;
}

var view = partialViewResult.View;
var viewContext = new ViewContext(context, view, partialViewResult.ViewData,
partialViewResult.TempData, sw);
view.Render(viewContext, sw);
if (result != null)
{
result.ViewEngine.ReleaseView(context, view);
}
return sw.ToString();
}
}

关于c# - 如何将 ASP.NET MVC ViewResult 呈现为 HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7128177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com