解析googlemap链接期间出现Razor.Parse错误

时间:2018-07-02 11:22:31

标签: c# html parsing razor

场景

在我的应用中,我使用HTML解析到Razor.Parse<>().的文本,链接和标签

string Razor.Parse<TEmail>(string razorTemplate, TEmail model) where TEmail : BaseEmail

我使用'@'来解析model中的数据。我还解析Web链接。直到我解析Google Map链接,例如

,此功能才能正常工作

问题 https://www.google.com/maps/place/New+York,+NY,+USA/@40.6974034,-74.1197634,11z/data=!3m1!4b1!4m5!3m4!1s0x89c24fa5d33f083b:0xc80b8f06e177fe62!8m2!3d40.7127753!4d-74.0059728 链接包括“ @ ”。所以我得到了错误:

RazorEngine.Templating.TemplateParsingException: '"40.6974034" is not valid at the start of a code block.  Only identifiers, keywords, comments, "(" and "{" are valid.'

我的尝试

我尝试用dobule @@ 解析html https://www.google.com/maps/place/New+York,+NY,+USA/@@40.6974034,-74.1197634,11z/data=!3m1!4b1!4m5!3m4!1s0x89c24fa5d33f083b:0xc80b8f06e177fe62!8m2!3d40.7127753!4d-74.0059728 但是我得到了错误:

RazorEngine.Templating.TemplateParsingException: '"@" is not valid at the start of a code block.  Only identifiers, keywords, comments, "(" and "{" are valid.'

任何想法我该怎么办?谢谢

1 个答案:

答案 0 :(得分:1)

这是因为您试图传递无效的内容。当您使用“ @”关键字时,您不能传递值,您必须传递标识符,关键字,注释,“(”,“ {”。“ @”关键字标记代码块的开始,例如:

string value = Razor.Parse("@UserSession.NumberOfPeople")

上面的方法可以工作,但是:

string value = Razor.Parse("@http://www.something.com")

不起作用,这是无效的。

您需要做的是找到替代方法。 您需要使用razor engine。如果你不知道 阅读here。您无法保留 @ ,因为Razor.parse不会转义字符串。