пятница, 31 мая 2013 г.

Как отрендерить ASP.NET MVC страницу в строку

Возможно, у вас была необходимость просто получить готовый HTML вашей страницы для отправки на почту или хранить как отчет и тд.

Как ?

public class ViewRenderer
    {
        public static string RenderView(string viewName, ControllerContext controllerContext, object model)
        {
            ViewEngineResult view = ViewEngines.Engines.FindView(controllerContext, viewName, null);
            controllerContext.Controller.ViewData.Model = model;

            using (var writer = new StringWriter())
            {
                ViewContext context = new ViewContext(
                    controllerContext,
                    view.View,
                    controllerContext.Controller.ViewData,
                    controllerContext.Controller.TempData,
                    writer);

                view.View.Render(context, writer);
                writer.Flush();

                return writer.ToString();
            }
        }
    }

Как пользоваться ?
Передаем название view, которое хотим отрендерить, ControllerContext у вас есть, это свойство в вашем контролере. Последний параметр - ваш класс модель с данными если нужно.

string html = ViewRenderer.RenderView("YTDClientReport", ControllerContext, YourViewModelInstance);

Комментариев нет:

Отправить комментарий