日期:2014-05-17  浏览次数:20870 次

求NET <%= %> 实现原理
看到有些网站用标签式写HTML 只要在HTML 里面插入一个标记就可以讲数据插入进去,不过现在遇到个问题就是
《%= %》 这个不知道是怎么实现的google基本都是说反射, 但是反射不能获得实例名而且太慢了。想请问下有什么号的办法实现<%= %>标记的替换

------解决方案--------------------
ASP.NET,编译后,你会发现实际的ASPX页面没有内容(WEB应用程序),其中的代码和html内容都被编译进dll里了。
做法就是编译的时候,把html静态内容存在变量/资源里,把<%=%>之间的代码拿出来编译,最后按顺序输出。

运行时,输出<%之前的静态html内容,输出<%=%>之间的代码的输出结果,输出%>之后的静态html内容。所以实际上,效率没有什么影响。以ASP.NET来说,也并非通过反射实现的。

顺便说一句<%#%>之类的数据绑定,以DataGridView为例,编译器会生成Itemplete模版来输出内容。具体有兴趣可以反编译通过发布方式输出的Web应用程序。(不是Web站点,站点编译没那么彻底,允许随时修改aspx内容,在首次访问时会重新编译一次)