Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ASP.NET中将完整视图呈现为字符串_Asp.net_Asp.net Mvc - Fatal编程技术网

在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);
可能的重复与