首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖Razor CodeGeneration

覆盖Razor CodeGeneration
EN

Stack Overflow用户
提问于 2015-04-25 03:11:59
回答 1查看 61关注 0票数 0

我需要更改Razor视图引擎生成的View子类的loginc。据我所知,MVC解析Razor cshtml文件并生成IView子类Render方法,该方法将html标记写入编写器对象。在我的例子中,因为环境/主机将有更多的信息(元数据),所以我想使用它。我需要进入Razor从cshtml解析AST并将其传递给CodeGenerator的地方。目前,我正在尝试在aspnetwebstack源代码中找到该步骤。我还找不到这一点,我怀疑这些步骤是混合的,所以没有单独的get AST和生成代码步骤。

EN

回答 1

Stack Overflow用户

发布于 2015-04-25 22:21:33

到目前为止,我得到的是这个

Razor模板引擎解析器返回一个包含Span和Block元素的AST。跨度看起来像是叶节点。我做了一些测试代码,问题是在切换到C#代码之前,span不会分离不同的html节点,而是包含原始html字符串。例如:

代码语言:javascript
复制
<html><body><!-- Single statement block -->@{ var myMessage =   \"Hello World \"+123; }</body></html>

给了我这棵树

代码语言:javascript
复制
* 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部分合并到一个字符串中,那么编辑器如何根据嵌套来折叠它们?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29855628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档