2017-08-31 3 views
1

En espérant que quelqu'un puisse vous aider. Ça me cause un vrai mal de tête. RazorEngine renvoie une erreur impaire lorsque l'un de mes modèles contient une adresse électronique qui contient un trait d'union à la fin de la partie utilisateur de l'adresse (par exemple, [email protected]).Problème avec RazorEngine, modèles et adresses e-mail

L'erreur est longue, et a de grandes explications sur les raisons de modèles dynamiques ne sont cependant la partie pertinente est

The name 'domain' does not exist in the current context. 

Je ne comprends pas fonctionnent pas, etc., ce avec le même modèle lorsque je change l'adresse e-mail à celui qui n'a pas la même structure - @, donc c'est certainement quelque chose à voir avec la façon dont RazorEngine analyse cela. Il semble qu'une séquence particulière mène RazorEngine à lire le @ comme le début d'une commande de rasoir.

J'ai essayé de remplacer le '-' par l'entité HTML & # 45; Mais le résultat est le même. Est-ce que quelqu'un d'autre a vu cela ou est-ce que quelqu'un sait d'autres solutions de contournement que je pourrais essayer?

+0

Veuillez montrer un exemple de la façon dont cela est utilisé. L'adresse e-mail est-elle directement saisie dans le modèle ou transmise dans le modèle? Le code aide. –

+0

Cet exemple particulier utilise l'adresse e-mail tapée directement dans le modèle. –

Répondre

2

Le problème n'est pas juste le trait d'union, le problème est le symbole - @. Il traduit cela comme si vous passiez la variable "domaine" dans votre modèle, vous ne pouvez pas le trouver et paniquer. Vous aurez besoin d'y échapper, il y a plusieurs façons de le faire, peut-être que si vous montrez votre code, nous pourrions vous suggérer la route à suivre. Le plus souvent cela est résolu en utilisant quelque chose comme @ Html.Raw ("[email protected]")

Je peux trouver des commentaires et de la documentation partout sur des choses comme l'utilisation de traits de soulignement pour les attributs de données html (ie test de données doit être écrit dans le rasoir comme data_test) mais pour la vie de moi je n'ai jamais été capable de trouver n'importe quelle documentation n'importe où sur pourquoi le tiret est traité comme il est.

+0

Salut Travis, comme je l'ai dit dans mon post original, si je supprime le trait d'union, le modèle compile et fonctionne correctement. Ce n'est pas un problème juste avec le @ c'est spécifiquement quand il est combiné avec un trait d'union précédent, mais vous êtes sur place avec le problème sous-jacent. J'ai essayé d'envelopper l'adresse dans Html.Raw, et diverses façons d'échapper au trait d'union ce matin. Je vais essayer la même chose pour échapper au @, mais ne semble pas plein d'espoir. Peut-être avoir recours à la concaténation de chaînes old-school pour contourner ce problème. –

+1

Salut Travis, ça l'a cloué. Echapper à @ fonctionne s'il y a un trait d'union ou non, ne pas s'échapper ne fonctionne que s'il n'y a pas de trait d'union. Je ne vais pas prétendre comprendre pourquoi le trait d'union fait la différence, mais je vais prendre la correction. –