随笔-74  评论-365  文章-17  trackbacks-6

       CS中的模板几乎遍布整个应用,当我们利用SDK做二次开发的时候,我们需要很长的熟悉过程,而这个过程大部分时间被烦躁的检索所占据,检索模板、检索类文件,检索类文件我们可以使用类视图快速定位到类所在的文件。然而确定需要修改的模板或需要修改的类却不是那么方便的事情。CS在这里为我们做了一些工作,但并不是特别方便,按照下面的方法即可直观的找到需要修改的文件。

       CS中,如果是调试项目,在生成的HTML代码里会嵌入页面所使用的模板的类名及模板文件路径,但它是以HTML注释的方式体现出来的,我们要确定某个模块的信息还需要查看源文件并繁琐的检索,这里我们只需要稍微改造一下便能让这些注释更直观一眼就可以快速了解模块的相关信息。

让我们打开\src\Controls\BaseClasses\TemplatedWebControl.cs\src\Controls\BaseClasses\SkinnedWebControl.cs这两个文件,这两个类是系统模板控件的基类,它们都有这样一个方法:

[System.Diagnostics.Conditional("DEBUG")]
        
protected void SourceMarker(bool isStart, HtmlTextWriter writer)
        {
           
            
if(isStart)
            {
                writer.WriteLine(
"<!-- Start: {0} -->"this.GetType());
                
                
if(System.IO.File.Exists(HttpContext.Current.Server.MapPath(this.SkinPath)))
                    writer.WriteLine(
"<!-- Skin Path: {0} -->"this.SkinPath);
                
else if(SkinTemplate != null)
                    writer.WriteLine(
"<!-- Inline Skin: {0} -->"true);
                
else
                    writer.WriteLine(
"<!-- Skin Path: {0} -->"this.DefaultSkinPath);

            }
            
else
                writer.WriteLine(
"<!-- End: {0} -->"this.GetType());
        }

这个方法的目的即是,在Debug编译环境下,控件输出的时候记录控件所属于的类名和控件所使用的skin路径,方便客户端通过HTML代码找到相应的代码进行修改,然而这里使用的是HTML注释,我们在查找的时候很不方便,那么我们把它转换成HTML隐藏的标签并在需要的时候让其制动显示在浏览器上不是更方便吗,这就进行改造,修改此方法如下:
SourceMarker

聪明的你一定看出来了,这里其实很简单,只是把相应的HTML注释改为隐藏的span标签,对应的两个类文件都按照这样的方式进行修改即可。
修改了上述两个文件后还需要修改另外一个每页都需要的文件,这里我们选择\src\Controls\Utility\Footer.cs这个文件,因为这个脚标文件在每个页面都用得着,我们可以在这里设置一个开关让其通过点击自动显示和隐藏上面所修改的标签。
在Footer这个类的Render方法里把相应的writer.Writer方法改为如下所示样式,这样在Debug的时候就可以点击页脚的Skin、InSkin、Class三个连接来显示相应的Debug标签了。
Footer

通过上面的改造我们可以在页脚看到三个标签:Skin、InSkin、Class当我们点击这三个标签的时候页面就会显示相应的控件的类名,Skin路径等信息,这在二次开发CS的过程中可以非常快速的定位到想修改的资源,节约大量的检索时间。希望对您有所帮助。

posted on 2006-05-07 23:16 dragonpro 阅读(2660) 评论(10)  编辑 收藏 所属分类: 编程/技术

评论:
#1楼  2006-05-09 15:01 | miniflyfish      
不错,很有用,期待Felix更多的文章
  回复  引用  查看    
#2楼  2006-05-17 17:02 | 思无邪      
谢谢
希望看到更多文章,我现在也在看CS.可是比你要差多了
  回复  引用  查看    
#3楼  2006-05-17 17:41 | 思无邪      
用的
CS是哪个版本?好像不是2.0
  回复  引用  查看    
#4楼 [楼主] 2006-05-21 13:27 | Felix      
当然是2.0的,不过1.x很多核心代码与2.0的差不多
  回复  引用  查看    
#5楼  2006-05-28 10:56 | cz [未注册用户]
想问关于cs,发现cs2.0中关键字闭屏对中文不起作用,还有就是cs中站内中文搜索简直太差了。不知有什么研究没有
  回复  引用    
#6楼 [楼主] 2006-05-30 23:49 | Felix      
关键字屏蔽倒还没注意,中文搜索我会拿一个专题来探讨
  回复  引用  查看    
#7楼  2006-06-04 00:45 | NDO      
请问哪里有源代码下载,我下了一天也没找到呀,下载下来都是WEB 层的页面以及相关的DLL文件,就是没有代码呀,请问哪位老大知道,给我介绍一下,或者给我发到EMAIL中netcasewqs@163.com ,谢谢
  回复  引用  查看    
#9楼  2007-03-11 22:08 | tlze [未注册用户]
通过搜索找到本文,获益不浅,真有相见恨晚感觉.
  回复  引用    
#10楼  2007-03-20 10:39 | BAsil      
这个技巧对我调试CS帮助真是太大了,谢谢楼主!
  回复  引用  查看    

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-09-30 16:32 编辑过


相关链接:
 
Free Web Counter