2013-04-10 13 views
5

Ho un PartialView che contiene un codice HTML con annotazioni Razor. Mi genera una pagina che voglio inviare via email a chiunque. C'è un modo per tradurre questo PartialView in contenuto HTML per inviarlo?Invia contenuto PartialView come e-mail

+0

Forse questo può aiutare: http://akinyusufer.blogspot.in/2011/05/razor-render-mvc3-view-render-to-string.html –

+0

Possibilmente stessa preoccupazione/risposta come questo: [Rasoio MVC ASP.NET: come eseguire il rendering del codice HTML di una visualizzazione parziale del rasoio all'interno dell'azione del controller] (http://stackoverflow.com/a/4344602/1036187) – rivarolle

+0

possibile duplicato di [Rasoio MVC ASP.NET : Come visualizzare il codice HTML di un Razor Partial all'interno dell'azione del controller] (http://stackoverflow.com/questions/4344533/asp-net-mvc-razor-how-to-render-a-razor-partial-views-html -inside-the-controll) –

risposta

5

Io suggerirei di usare MvcMailer che fa esattamente ciò che si vuole (senza dover scrivere il codice per esso .. si può anche farlo in modo asincrono):

https://github.com/smsohan/MvcMailer/wiki/MvcMailer-Step-by-Step-Guide

Aggiornamento

Come indicato nei commenti, la soluzione per implementarla da soli (credo ancora che MvcMailer ti semplificherà la vita):

protected string RenderPartialViewToString(string viewName, object model) 
{ 
    if (string.IsNullOrEmpty(viewName)) 
     viewName = ControllerContext.RouteData.GetRequiredString("action"); 

    ViewData.Model = model; 

    using (StringWriter sw = new StringWriter()) { 
     ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName); 
     ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw); 
     viewResult.View.Render(viewContext, sw); 

     return sw.GetStringBuilder().ToString(); 
    } 
} 

(ASP.NET MVC Razor: How to render a Razor Partial View's HTML inside the controller action)