WebControl开发点滴2:获取设计时项目路径

一般Web程序是通过HttpContext.Current.Server.MapPath("~")得到当前web的物理路径。
在设计时HttpContext.Current是null, 此路不通,用来判断是否是设计状态倒是不错。

Web控件在设计时会被实例化,但仅仅是实例化,不会为它设定相关Web环境,比如Page。

看样用常规方法行不通。控件在设计时能得到哪些资讯呢?Site! 这个小东西在设计时非空,但是。。。从文档上看,也没什么可用的东西。

为什么图片控件在设计时就能够选择当前Web下的相对路径呢?好像是个专用Designer.看来要和DTE相关。
http://blogs.msdn.com/mszcool/archive/2004/06/30/169793.aspx
上面的blog中讲解了如果调用DTE。这样得到当前项目的绝对路径只要几行代码:

None.gif public   static   string  GetProjectPath()
ExpandedBlockStart.gifContractedBlock.gif  
dot.gif {
InBlock.gif   EnvDTE.DTE devenv 
= (EnvDTE.DTE)Marshal.GetActiveObject("VisualStudio.DTE.7.1");
InBlock.gif   
string projectFile = devenv.ActiveDocument.ProjectItem.ContainingProject.FileName;
InBlock.gif   System.IO.FileInfo info 
= new System.IO.FileInfo(projectFile);
InBlock.gif   
return info.Directory.FullName;
ExpandedBlockEnd.gif}
注意:
原文用devenv.ActiveSolutionProjects.GetValue(0)来得到当前项目。在控件设计时,有可能在项目管理器上选中的其它项目,这样得到的就不是当前编辑页面所在的项目。

转载于:https://www.cnblogs.com/steeven/archive/2004/07/30/28541.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值