2017-08-31 58 views
1

希望有人可以提供幫助。這讓我非常頭痛。問題與RazorEngine,模板和電子郵件地址

只要我的一個模板包含在地址的用戶部分末尾包含連字符的電子郵件地址(例如,[email protected]),RazorEngine就會拋出奇怪的錯誤。該錯誤是漫長的,有關於爲什麼動態模型不能正常工作等偉大的解釋,但是,相關部分是

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

我當我改變的電子郵件地址不相同的模板得到這個一個沒有相同的@結構,所以它肯定是與RazorEngine如何解析它有關的。看起來,特定的序列使RazorEngine讀取@作爲剃刀命令的開始。

我試過用HTML實體替換' - '-但結果是一樣的。有沒有其他人看過這個或有沒有人知道我可以嘗試的其他解決方法?

+0

請舉例說明如何使用它。電子郵件地址是直接輸入模板還是作爲模型的一部分傳入?代碼有幫助。 –

+0

這個特殊的例子使用直接輸入到模板中的電子郵件地址。 –

回答

2

問題不只是連字符,問題是 - @符號。它正在翻譯,就好像你在模型中傳遞變量「域」一樣,找不到它並且嚇壞了。您需要轉義它,有幾種方法可以這樣做,也許如果您顯示代碼,那麼我們可以建議採用哪條路線。最常見的是通過使用類似@ Html.Raw(「[email protected]」)來解決的問題

我可以在任何地方找到關於使用下劃線爲html數據屬性的註釋和文檔(例如數據測試應該是用剃鬚刀寫成data_test),但對於我的生活,我始終無法找到任何關於爲什麼連字符被按照原樣處理的文檔。

+0

嗨特拉維斯,正如我在我原來的帖子所說,如果我刪除連字符,模板編譯和運行正確。這與@它不是一個問題,特別是當它與前面的連字符相結合時,但是你會發現潛在的問題。我試過在Html.Raw中包裝地址,並且今天早上有各種逃避連字符的方法。我會嘗試同樣的方式來逃避@,但看起來並不樂觀。可能不得不求助於老派字符串連接來解決它。 –

+1

嗨特拉維斯,釘它。轉義@作品是否存在連字符,而不是轉義,只有在沒有連字符時才起作用。我不會假裝得知連字符爲什麼會有所作爲,但我會採取修正措施。 –