2017-08-31 59 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

嗨特拉维斯,钉它。转义@作品是否存在连字符,而不是转义,只有在没有连字符时才起作用。我不会假装得知连字符为什么会有所作为,但我会采取修正措施。 –