继承System.Web.UI.WebControls.WebControl用户自定义控件,有一个属性设置虚拟路径,如果在设计状态下转换该虚拟路径到据对路径。

解决方案 »

  1.   

    我试过,设计状态得不到,设计状态下this.Context是空的。
      

  2.   

    首先你要理解“VirtualDir”与“实际路径”之间是如何建立映射关系的。比方说,要想知道"http://localhost/webapp1"这个虚拟路径对应到哪个“实际路径”(Web Server为IIS),那就要通过ADSI来查询虚拟路径的信息。如你所说,你想要在设计状态下得知“虚拟路径”属性对应的实际路径,但是实际上这个“虚拟路径”到底是什么是根本不可预知的(因为你的程序还没有发布),也就无从查找其对应的“实际路径”。
      

  3.   

    返回包含指定 Web 站点的虚拟目录的物理路径。要读取代码隐藏模块中的 MapPath,请使用 HttpContext.Current.Server.MapPath。[C#] 
    String FilePath;
    FilePath = Server.MapPath("/MyWebSite");
      

  4.   

    using System.IO.DirectoryDirectory.GetCurrentDirectory()  is enough for you .
      

  5.   

    using System.IO.DirectoryString FilePath;
    FilePath = Server.MapPath("/MyWebSite");
      

  6.   

    我觉得如果你要求你的控件属性做到设计模式下能够MapPath,是不可能的。因为在设计时可能根本是脱离了Http的,另外context从名字都知道是Http上下文,而设计时是Http无关的,怎么可能给你用这个context呢?
      

  7.   

    楼上说用MapPath()的诸位,睁大眼睛,楼主要的是“在设计状态下”转换虚拟路径到绝对路径,不是在运行时。我以前写高级自定义控件的时候就遇到过这个问题,研究的结果是“不可能”
      

  8.   

    大概redbb
    using System.IO.Directory
    Directory.GetCurrentDirectory()  is enough for you .这是当前能够接受的答案中不错的了。