如题.
在后置代码中如何获取该控件的物理文件名而在一个页面(.aspx)则可通过如下方式获取:
Response.Write(Server.MapPath(Request.Path));

解决方案 »

  1.   

    AppDomain.CurrentDomain.BaseDirectory
    这是根目录
    AppDomain.CurrentDomain下面还有些其他的目录
    你拼下就出来了
      

  2.   

    晕....Server.MapPath(Request.Path)这不都已经出来了嘛,没人请求这个页面,你写的代码还有什么用?请求的时候,Request不就有了嘛
      

  3.   

    ls两位大哥,我要的不是当前请求的页面的路径,我要的就是这个页面包含的某个用户控件的路径。
    嘿嘿,AppDomain都来了,那个获取的是应用程序对象,不是某个页面或控件对象。
    Server.MapPath(Request.Path)获取到的始终是当前的页面路径。倒是可以用Server.MapPath(this.TemplateSourceDirectory)取到这个控件所在的目录。
      

  4.   

    一般文件跟类名是一样的,你可以GetType 再处理下
      

  5.   

    OK,OK,七哥,Sorry。
    我觉得我的问题已经很明确了,比如说我们经常要获取某个页面(.aspx)的物理文件路径,可以这样:Server.MapPath(Request.Path);现在,在这个页面里有个用户控件(.ascx),那么我该如何才能取得到这个用户控件的物理文件路径呢?
      

  6.   

    this.Parent.Page.Server.MapPath("")
    在控件里
      

  7.   

    不懂你到底问的是什么。不过,我估计我说一个你的问题,你自己也就含糊了,所以需要想好了再问:谁说Request.Path中是当前页面对象的地址?它只是浏览器请求服务器端的地址。例如你在Button控件中使用PostbackUrl参数得到的结果,以及UrlRewrite得到的结果,Server.Transfer得到的结果,甚至页面可能根本没有aspx文件而仅是dll中编译好的一个Page的子类的实例,等等。可能你用那个 Request.Path (客户端请求url)想当然地认为是当前页面的路径。据此逻辑,我就不知道你对用户控件又会怎样(错误地)推测了。你最好还是重新整理自己的设计思路,用更加细致、无歧异的描述来设计。
      

  8.   

    简单的说:
    可以在一个页面如default.aspx的后置代码中,可以通过Server.MapPath(Request.Path)取到这个文件的物理地址,如 C:\Inetpub\wwwroot\test\Default.aspx,同样,我需要在一个用户控件如test.ascx的后置代码中获取这个控件的物理文件地址,如:C:\Inetpub\wwwroot\test\test.ascx 但可以通过Server.MapPath(this.TemplateSourceDirectory)取到这个控件所在的目录,如:C:\Inetpub\wwwroot\test在我的项目中这个问题当然有多种解决办法,但是,这依然是个问题,如何解决呢?查了许多文档,都没有找到解决的办法。
      

  9.   

    http://topic.csdn.net/t/20060109/07/4505002.html
    这个里面有讨论
      

  10.   

    这个问题确实不能直接解决。
    我是这样解决的:Path.Combine(Server.MapPath(this.TemplateSourceDirectory),this.GetType().Name.ToLower().Replace("_ascx",".ascx"))
    也只有这样了。