有没有办法检测 HTML 页面是否包含任何 razor/C# 代码?本质上,我希望用户能够提供自定义布局,以及我将用 RenderSection 替换的标签。我想在进行此替换之前验证是否所有 HTML 都不包含任何内容,例如<a href="@(some C# code)"
.
所有关于替代方法的讨论,应该/可以/会放在一边,只是简单地说:有没有办法以编程方式检测文件是否包含 C#/Razor 代码?
我对 Razor 标记了解不多——但我在想,当你获取他们传入的布局字符串时,你会想要解析文本并获取以 an 开头的所有内容@
并将这些单词放入数组中. 然后,当您将其重新发布到您的网站时,使用剃须刀代码访问数组中的数据......
另一种更简单的方法是遍历所有传入的代码并用@
不同的符号替换所有符号&
,这样它就不会被 Razor 处理器解释:
layoutString = layoutString.Replace('@', '&');
在浏览器中?不,因为除非程序员犯了错误,否则呈现的 HTML 中没有 Razor/C# 代码,只有 HTML 是其结果。
你问的问题就像是问用什么类型的烤箱从披萨上烤披萨。坏消息——你永远不会知道。
如果您从中提供合理的标签,则可以在 javascript 中解析它们,但您必须自己输出该元数据作为生成的 html 的一部分。
阅读您对 TomTom 的评论后;答案是:
不,Razor 不附带任何公共语法解析器。