我需要更改Razor视图引擎生成的View子类的loginc。据我所知,MVC解析Razor cshtml文件并生成IView子类Render方法,该方法将html标记写入编写器对象。在我的例子中,因为环境/主机将有更多的信息(元数据),所以我想使用它。我需要进入Razor从cshtml解析AST并将其传递给CodeGenerator的地方。目前,我正在尝试在aspnetwebstack源代码中找到该步骤。我还找不到这一点,我怀疑这些步骤是混合的,所以没有单独的get AST和生成代码步骤。
发布于 2015-04-25 22:21:33
到目前为止,我得到的是这个
Razor模板引擎解析器返回一个包含Span和Block元素的AST。跨度看起来像是叶节点。我做了一些测试代码,问题是在切换到C#代码之前,span不会分离不同的html节点,而是包含原始html字符串。例如:
<html><body><!-- Single statement block -->@{ var myMessage = \"Hello World \"+123; }</body></html>给了我这棵树
* start block Markup
** span <html><body><!-- Single statement block -->
** start block Statement : @{ var myMessage = "Hello World "+666; }
*** span @
*** span {
*** span var myMessage = "Hello World "+123;
*** span }
** end block Statement
** span </body></html>
* end block Markup有趣的是,如果解析器不提供关于html标记的信息,并将连续的html部分合并到一个字符串中,那么编辑器如何根据嵌套来折叠它们?
https://stackoverflow.com/questions/29855628
复制相似问题