2009-06-10 11 views
1

J'ai une application qui génère un couple de mails différents. Ces messages sont actuellement créés à l'aide d'un générateur de chaîne qui génère une chaîne basée sur HTML qui est le contenu du courrier.Fichiers de modèle .NET

Cette approche devient salissante. Le code est des objets mélangés avec HTML, etc, etc Ce que je voudrais est d'avoir un modèle similaire à celui utilisé dans par exemple MVC, puis utiliser la sortie de ce modèle pour ajouter à la messagerie. Est-ce que cela peut être fait en utilisant par exemple T4 comment ajouter une blessure ou dois-je utiliser une autre approche pour cela?

Les modèles ne doivent pas être modifiables au moment de l'exécution, même si cela serait bien.

Répondre

2

Cela peut être fait avec T4. Cela fonctionnerait exactement comme dans MVC.

Vous devriez envisager d'obtenir le Clarius T4 Editor, comme Visual Studio ne vient pas avec intellisense pour T4 prêt à l'emploi, et l'éditeur Clarius T4 peut fournir cela.

+0

De bons exemples sur comment alimenter un modèle avec un objet, puis utiliser cet objet dans le modèle et retourner la chaîne générée? – Riri

+0

TextTransform.exe est l'outil de ligne de commande qui fait cela. Voir http://msdn.microsoft.com/en-us/library/bb126461.aspx –

+0

Scott Hanselman en donne une assez bonne démonstration dans son discours sur NerdDinner à http://videos.visitmix.com/MIX09/T49F. La discussion sur les modèles T4 débute à 23:10 (23 minutes dix secondes après le début du discours). –

1

Avez-vous envisagé d'utiliser simplement XSLT? Vous pouvez facilement créer des documents HTML à partir de XML brut en appliquant une transformation XSL dans .Net

Nous stockons des modèles XSL dans la base de données et utilisons une approche simple NAME/VALUE pour peupler les modèles en code. Il est très efficace et flexible, et la sortie peut être redirigée vers le navigateur facilement. Alternativement, vous pouvez simplement stocker les modèles individuels dans les fichiers sur le serveur et les charger de cette façon.

De toute façon, the amount of code to implement this is relatively simple, et .Net a de nombreuses classes en place pour faciliter cela. Si vous voulez un exemple de la façon dont nous l'avons implémenté, laissez un commentaire et j'ajouterai des exemples de code à cette réponse.

+0

Oui, s'il vous plaît. J'aimerais voir les échantillons. –