RazorEngine et l'analyse des fichiers de vue physique provoque toujours une exception
J'ai le texte suivant RazorEngine appel:
public class RazorEngineRender
{
public static string RenderPartialViewToString(string templatePath, string viewName, object model)
{
string text = System.IO.File.ReadAllText(Path.Combine(templatePath, viewName));
string renderedText = Razor.Parse(text, model);
return renderedText;
}
}
Ceci est appelé:
_emailService.Render(TemplatePath, "Email.cshtml", new { ActivationLink = activationLink });
J'ai aussi ce fichier de la vue (courriel.cshtml):
<div>
<div>
Link: <a href="@Model.ActivationLink" style="color:#666" target="_blank">@Model.ActivationLink</a>
</div>
</div>
Lors de l'appel à Rasoir.Parse() se produit, je reçois toujours un:
Impossible de compiler le modèle. Vérifier la liste des Erreurs pour plus de détails.
La liste d'erreurs est:
error CS1061: 'object' does not contain a definition for 'ActivationLink' and no extension method 'ActivationLink' accepting a first argument of type 'object' could be found
J'ai essayé de tout sous le soleil, essayez d'utiliser un type concret, par opposition à un type anonyme, déclarant que l' @Modèle à la ligne en haut de l'affichage de fichier, mais pas de chance. Je me demandais si la bibliothèque est en faute ou définitivement en moi?
Par le chemin, la razorengine je fais référence est disponible ici sur codeplex:
RazorEngine
source d'informationauteur jaffa
Vous devez vous connecter pour publier un commentaire.
Si vous faites l'appel comme suit:
Qui devrait vous donner des résultats corrects. Mais après je vois votre méthode posté ci-dessus, je vais être en mesure de déterminer où se situe le problème.
Mise à jour
De changer votre mode à la suivante:
et vous pouvez l'appeler comme vous le faites ci-dessus.
La raison pour laquelle cela ne fonctionne pas c'est parce que vous avez dit l'Analyseur que le modèle est de type objet plutôt que de passer dans ce type, il est vraiment. Dans ce cas, un type anonyme.
Accepté la réponse a été parfait en 2011 (je crois pré-v3 de RazorEngine) mais ce code est maintenant marqué comme obsolète dans la dernière version (dans le temps de la taper c'est 3.7.3).
Pour une version plus récente de votre méthode peut être saisie comme ceci:
et dans l'ordre pour qu'il fonctionne, vous devez ajouter
Ici sont quelques conseils que vous pourriez essayer:
Faire de votre rasoir vue fortement typée pour un modèle:
Lors du rendu de passer un
Foo
modèle:Si vous essayez d'envoyer des e-mails à partir de votre point de Vue, assurez-vous la caisse Postale avant de réinventer quelque chose.