在ASP.NET中将完整视图呈现为字符串
我发现以下代码将局部视图呈现为字符串:在ASP.NET中将完整视图呈现为字符串,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我发现以下代码将局部视图呈现为字符串: public static string RenderPartialToString(string controlName, object viewData) { ViewPage viewPage = new ViewPage() { ViewContext = new ViewContext() }; viewPage.ViewData = new ViewDataDictionary(viewData);
public static string RenderPartialToString(string controlName, object viewData)
{
ViewPage viewPage = new ViewPage() { ViewContext = new ViewContext() };
viewPage.ViewData = new ViewDataDictionary(viewData);
viewPage.Controls.Add(viewPage.LoadControl(controlName));
StringBuilder sb = new StringBuilder();
using (StringWriter sw = new StringWriter(sb))
{
using (HtmlTextWriter tw = new HtmlTextWriter(sw))
{
viewPage.RenderControl(tw);
}
}
return sb.ToString();
}
但是,我需要将完整视图呈现为字符串(其中包含ViewData)
执行此操作的最佳方法是什么?将完整视图呈现为字符串:
private string RenderViewToString(string viewName, object model=null)
{
if (string.IsNullOrEmpty(viewName))
viewName = ControllerContext.RouteData.GetRequiredString("action");
if (model != null)
ViewData.Model = model;
// you can pass in additional arguments to this function
// and manipulate the ViewData further if you need to
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindView(ControllerContext, viewName, null);
var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
如果要呈现不带模型的页面,请这样使用:
var text = RenderViewToString("Index");
像这样,如果你想用一个模型呈现一个页面
var text = RenderViewToString("OtherPage", model);
可能的重复与