在引用资源的 ASP.NET 服务器控件中,可以使用绝对路径或相对路径,这一点与客户端元素一样。如果使用相对路径,则相对于页面、用户控件或包含该控件的主题的路径进行解析。例如,假设 Controls 文件夹中包含一个用户控件。该用户控件包含一个 Image Web 服务器控件,该服务器控件的 ImageUrl 属性设置为以下路径:
Images/SampleImage.jpg
该用户控件运行时,路径将解析为以下形式:
/Controls/Images/SampleImage.jpg
无论承载用户控件的页面位置如何,都是如此。
服务器控件中的绝对和相对路径引用具有以下缺点:
-
绝对路径在应用程序之间是不可移植的。如果移动绝对路径指向的应用程序,则链接将会中断。
-
如果将资源或页面移动到不同的文件夹,可能很难维护采用客户端元素样式的相对路径。
为克服这些缺点,ASP.NET 启用了 Web 应用程序根目录运算符 (~),在服务器控件中指定路径时,可以使用该运算符。ASP.NET 会将 ~ 运算符解析为当前应用程序的根目录。可以结合使用 ~ 运算符和文件夹来指定基于当前根目录的路径。下面的示例演示使用 Image 服务器控件时用于指定图像的根目录相对路径的 ~ 运算符:
<asp:image runat="server" id="Image1" |
在该示例中,图像文件将从 Web 应用程序根目录下的 Images 文件夹中直接读取,无论该页面位于网站的什么位置。
注意 |
---|
~ 运算符只能为服务器控件识别,并且位于服务器代码中。不能将 ~ 运算符用于客户端元素。 |
可以在服务器控件中的任何与路径有关的属性中使用 ~ 运算符。