2011-05-17 1 views
2

J'ai une application Web Forms asp.net qui doit envoyer des e-mails. J'aime la syntaxe de Razor et comme vous pouvez utiliser Razor en dehors de MVC, j'ai pensé que j'essaierais de l'utiliser. J'ai vu que vous pouvez passer par programme une chaîne de modèle à rasoir mais je voudrais garder mes modèles de rasoir en tant que fichiers .cshtml distincts.Utiliser les vues Razor comme modèles d'e-mail dans une application Web Forms

Est-ce que quelqu'un a des conseils simples, idiot-proofs sur la façon de faire cela? J'ai essayé de les charger à partir du fichier comme ceci:

UserDetails userDetails = new UserDetails {Name = "Fred"}; 
string template = File.OpenText("Email/UserDetailsEmail.cshtml").ReadToEnd();    
string messageText = Razor.Parse(template, userDetails); 

Tout en vain. Il y a une exception pour trouver le fichier. J'utilise la DLL de Razorengine.

J'ai tout le reste fonctionnant, le serveur de smtp etc., juste pas les vues.

Toute aide appréciée.

Répondre

4

Vous devez obtenir le chemin complet du fichier; les chemins relatifs finiront par être relatifs au mauvais endroit.

Ecrire

File.OpenText(Server.MapPath("~/Email/UserDetailsEmail.cshtml")) 
1

J'utiliserais l'outil MVCMailer que vous pouvez installer avec Nuget et qui a des échafaudages pour créer les vues.

Il est très bien écrit et l'application peuvent être ajoutés facilement à la vôtre:

https://github.com/smsohan/MvcMailer

http://www.codeproject.com/KB/aspnet/MvcMailerNuGet.aspx

+0

Savez-vous comment appeler une vue de rasoir à partir d'une forme Web projet. Lorsque j'appelle 'PopulateBody (mailMessage, viewName: "UserDetails");' J'obtiens une exception: "La valeur ne peut pas être nulle. \ R \ nParameter name: routeData". Y at-il des instructions simples pour truquer MvcMailer à l'intérieur et l'application de formulaires Web? – Matt

Questions connexes