以前我做开发的时候也就用相对路径的
但是后来因为在用ascx的时候当为图片或链接的时候
因为这个ascx可能是放在不同的文件夹层
这个时候就会引成了路径不对的问题
后来我就把所有的图片和所有的地址都用"/Images" "/News/"
这种形式来写了
但这时突然要我的这个网站变成了子目录
那我的写法就全不行了是不是aspx用想对路径 ascx用绝对路径???

解决方案 »

  1.   

    使用Control.ResolveUrl 方法 来看看可以不,例如:public class MyResolveUrl:Control
    {
       private string _ImageUrl;     
       public string ImageUrl
       {
          get
          {
             return _ImageUrl;
          }
          set
          {
             _ImageUrl = value;
          }
       }
       protected override void Render(HtmlTextWriter output)
       {           
          Image myImage = new Image();
          // Resolve Url.
          myImage.ImageUrl = ResolveUrl(this.ImageUrl);
          myImage.RenderControl(output);         
       }     
    }
      

  2.   

    不知道下面的这些内容对你有没有帮助:Control.ResolveUrl 方法public string ResolveUrl (
    string relativeUrl
    )
    参数
    relativeUrl
    与 TemplateSourceDirectory 属性相关联的 URL。 返回值
    转换后的 URL。 如果 relativeUrl 参数包含绝对 URL,则该 URL 原样返回。如果 relativeUrl 参数包含相对 URL,则该 URL 将更改为与当前请求路径相符的相对 URL,这样浏览器便能够解析该 URL。例如,请考虑以下方案: 客户端已请求了一个 ASP.NET 页,该页含有一个用户控件,该用户控件有一个关联的图像。ASP.NET 页位于 /Store/page1.aspx。用户控件位于 /Store/UserControls/UC1.ascx。图像文件位于 /UserControls/Images/Image1.jpg。如果用户控件将图像的相对路径(即 /Store/UserControls/Images/Image1.jpg)传递给 ResolveUrl 方法,此方法将返回值 /Images/Image1.jpg。此方法使用 TemplateSourceDirectory 属性解析为绝对 URL。返回的 URL 适用于客户端。