2017-08-31 6 views
1

誰かがこれを手助けすることができます。それは私に本当の頭痛を引き起こしています。RazorEngine、テンプレート、電子メールアドレスに関する問題

私のテンプレートの1つに、アドレスのユーザー部分の末尾にハイフンを含む電子メールアドレス([email protected]など)が含まれていると、RazorEngineが奇妙なエラーを投げています。エラーが長く、動的なモデルがなどを動作しない理由についての素晴らしい説明を持っている、しかし、関連する部分は、私がメールアドレスを変更するとき、私は同じテンプレートでこれを得ることはありません

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

です@構造体を持たないものですから、RazorEngineがそれをどのように解析しているのかは間違いありません。特定のシーケンスは、RazorEngineに、ひげ命令の開始として@を読むようにしているようです。

私は ' - 'をHTMLエンティティ&#45に置き換えようとしました。結果は同じです。誰かがこれを見たか、誰かが私が試すことができる他の回避策を知っていますか?

+0

これがどのように使用されているかの例を示してください。電子メールアドレスがテンプレートに直接入力されているか、モデルの一部として渡されていますか?コードが役立ちます。 –

+0

この特定の例では、入力された電子メールアドレスをテンプレートに直接使用しています。 –

答えて

2

問題はハイフンではなく、問題は - @記号です。それはあなたのモデルに変数 "domain"を渡しているかのようにそれを翻訳しています。それを見つけることができず、フリークアウトしません。エスケープする必要がありますが、これにはいくつかの方法があります。コードを表示したら、どのルートを取るべきかを提案することができます。 @Html.Raw( "[email protected]")

私は、htmlデータ属性にアンダースコアを使用するようなことについてどこでもコメントやドキュメントを見つけることができます。 razorでdata_testと書かれていますが)私の人生では、なぜハイフンが扱われているのかをどこででも知ることはできませんでした。

+0

こんにちはトラビス、私は私の元の投稿で言ったように、ハイフンを削除すると、テンプレートがコンパイルされ、正しく実行されます。特にハイフンと組み合わされているときには問題はありませんが、根本的な問題に取り組んでいます。私はHtml.Rawでアドレスをラップしようとしました、そして今朝ハイフンをエスケープする様々な方法。私は@をエスケープするために同じことをしようとしますが、期待していません。その周りを回避するために古い学校の文字列の連結に頼る必要があるかもしれません。 –

+1

こんにちはトラvis、それはそれを釘付け。 @をエスケープすると、そこにハイフンがあるかどうかにかかわらず、ハイフンがない場合にのみエスケープされます。なぜハイフンが違いを生むのではないかと思うが、私はその修正をとる。 –

関連する問題