在開發中我們為了整個程式目錄結構清晰化,望望會建立許多不同的檔案目錄.
例如結構如下:
|root
|pic
|web
|usercontrol
在web目錄中,我們怎麼取到pic目錄中的圖片路徑呢?
方法1:
讓我們先看看ASP.NET StartKit TimeTracker的解決方案:
ASP.NET StartKit TimeTracker的類Global中定義了一個公有方法:
public static string GetApplicationPath(HttpRequest request)
{
string path = string.Empty;
try
{
if(request.ApplicationPath != "/")
path = request.ApplicationPath;
}
catch (Exception e)
{
throw e;
}
return path;
}
在需要的地方進行調用,例如:
<a href='<%= Global.GetApplicationPath(Request) %>/<%# ((ASPNET.StarterKit.TimeTracker.BusinessLogicLayer.TabItem)
Container.DataItem).Path %>'>
<%# ((ASPNET.StarterKit.TimeTracker.BusinessLogicLayer.TabItem) Container.DataItem).Name %>
</a>
我對此方法進行了修改:
我先定義一個頁面基類.
public class PageBase :System.Web.UI.Page
讓系統中的其他aspx頁面繼承PageBase.
在基類定義下面的屬性
protected string appPath
{
get
{
string path=String.Empty;
try
{
if ("/"!=Request.ApplicationPath)
{
path=Request.ApplicationPath;
}
}
catch(Exception e)
{
throw e;
}
return path;
}
}
在我的aspx頁中,進行下面屬性綁定得到圖片
<img src='<%= appPath+"/pic/register.gif" %>' >
方法2:
也是我以前常用的方法
<asp:Image id="Image1" runat="server" ImageUrl="../pic/register.gif"></asp:Image>
其實伺服器控制項支援另一種路徑表示方法:"~", 相當於HttpRequest.ApplicationPath
<asp:Image Runat="server" id="Image1" ImageUrl="~/pic/register.gif"></asp:Image>
非伺服器控制項也可以這樣:
<img src="../pic/register.gif">
方法3:
使用者的機器上部署的時候,將路徑儲存在web.config裡面了。然後圖片的路徑是在背景.cs中用Configuration.appsettings確定
這方法是最差的一招
總結:個人感覺方法1最好,最靈活,也是我在許多微軟例題中看到的用得最多的方法。
不知道還有沒有其他方法,歡迎指點。