Render PartialView to String - ASP.NET MVC

Как получить PartialView в строку, чтобы потом ее отправить как письмо:

public static class HtmlHelperExtensions
{
    public static string RenderPartialToString(ControllerContext context, string partialViewName, ViewDataDictionary viewData, TempDataDictionary tempData)
    {                    
        ViewEngineResult result = ViewEngines.Engines.FindPartialView(context, partialViewName);
        if (result.View != null)
        {
            StringBuilder sb = new StringBuilder();
            using (StringWriter sw = new StringWriter(sb))
            {
                using (HtmlTextWriter output = new HtmlTextWriter(sw))
                {
                    ViewContext viewContext = new ViewContext(context, result.View, viewData, tempData, output);
                    result.View.Render(viewContext, output);
                }
            }
            return sb.ToString();
        }
        return String.Empty;
    }
}

теперь вызовем этот метод из контроллера:

object modelForPartialView = new { Value = "Value" };
string partialViewHtml = HtmlHelperExtensions.RenderPartialToString(this.ControllerContext, "PartialViewName", new ViewDataDictionary(modelForPartialView), new TempDataDictionary());</div>

Пример PartialViewName - "~/Views/Print/ReceiptMail.cshtml"
object modelForPartialView - Это та модель которая формируется в return PartialView(obj);

Комментарии

Популярные сообщения