MVC 5 Render View to String

后端 未结 5 1002
梦谈多话
梦谈多话 2020-12-13 09:44

It seems, most code for rendering view into string doesn\'t work in MVC 5.

I have latest MVC 5.1.2 templates and I am trying to render view into string.



        
5条回答
  •  鱼传尺愫
    2020-12-13 10:32

    To render PartialView to string use this code:

    class FakeController: ControllerBase {
        protected override void ExecuteCore() { }
        public static string RenderViewToString(string controllerName, string viewName, object model) {
            using(var writer = new StringWriter()) {
                var routeData = new RouteData();
                routeData.Values.Add("controller", controllerName);
                var fakeControllerContext = new ControllerContext(new HttpContextWrapper(new HttpContext(new HttpRequest(null, "http://localhost", null), new HttpResponse(null))), routeData, new FakeController());
                var razorViewEngine = new RazorViewEngine();
                var razorViewResult = razorViewEngine.FindPartialView(fakeControllerContext, viewName, false);
                var viewContext = new ViewContext(fakeControllerContext, razorViewResult.View, new ViewDataDictionary(model), new TempDataDictionary(), writer);
                razorViewResult.View.Render(viewContext, writer);
                return writer.ToString();
    
            }
        }
    }
    

提交回复
热议问题