2009-09-10 6 views
1

J'ai une application composée de plus de 10 fichiers ascx associés que nous utilisons pour afficher nos données sur le navigateur des utilisateurs à l'aide de l'assistant Html.RenderPartial.Comment envoyer un courrier électronique à l'adresse ASP.Net/MVC

Je dois envoyer par courriel les données qui sont une copie de ce qui est à l'écran. Je voudrais pouvoir obtenir le html généré sans avoir à faire un scrape d'écran.

Existe-t-il des suggestions sur la façon de procéder? J'essaie juste de ne pas dupliquer le travail.

Répondre

3

http://www.brightmix.com/blog/renderpartial-to-string-in-asp-net-mvc/ a une bonne solution pour rendre une vue à une chaîne de caractères afin que vous puissiez l'envoyer par courriel.

/// Static Method to render string - put somewhere of your choosing 
public static string RenderPartialToString(string controlName, object viewData) 
{ 
    ViewDataDictionary vd = new ViewDataDictionary(viewData); 
    ViewPage vp = new ViewPage { ViewData = vd }; 
    Control control = vp.LoadControl(controlName); 

    vp.Controls.Add(control); 

    StringBuilder sb = new StringBuilder(); 
    using (StringWriter sw = new StringWriter(sb)) 
    { 
     using (HtmlTextWriter tw = new HtmlTextWriter(sw)) 
     { 
      vp.RenderControl(tw); 
     } 
    } 

    return sb.ToString(); 
} 
3

Dans asp.net régulière, vous pouvez remplacer le render() et fournir votre propre HTMLWriter pour intercepter le rendu HTML avant de le copier à la HTMLWriter qui a été passé.

Je ne sais pas du haut de Je suis sûr que vous serez capable de le faire - surtout si vous créez un nouveau HttpModule dans le pipeline pour pré-traiter le flux de sortie.

+0

Cela ressemble à ce que je pensais. Dans asp.net régulière, ce n'est pas difficile. Documentation sur response.filter vous donne tout ce dont vous avez besoin, mais encore une fois, en MVC pas sûr. En outre, je ne savais pas que vous pouviez accepter les réponses. Encore apprendre à connaître stackoverflow. Mais c'est un site vraiment propre. Merci –

Questions connexes