2011-02-14 112 views
0

我使用兩個圖像標記。在一個使用的路徑是相對的,而另一個則是絕對的。沒有顯示絕對路徑圖像。下面是代碼:爲什麼圖像標籤中的屬性imageurl不能接受絕對路徑?

Expt_Image2.aspx頁

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Expt_Image2.aspx.cs" Inherits="Expt_Image2" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head runat="server"> 
     <title>Untitled Page</title> 
    </head> 
    <body> 
     <form id="form1" runat="server"> 
     <div> 
      <asp:Image 
       ID="Image1" 
       runat="server" 
       ImageUrl="~/Image/Bluehills.jpg" 
       Height="100" 
       Width="100"/> 
      <asp:Image 
       ID="Image2" 
       runat="server" 
       ImageUrl="C:\Documents and Settings\Lovey\My Documents\Visual Studio 2008\WebSites\Expt-New\Image\Sunset.jpg" 
       Height="100" 
       Width="100"/> 
     </div> 
     </form> 
    </body> 
</html> 

Expt_Image2.aspx.cs

using System; 
using System.Collections; 
using System.Configuration; 
using System.Data; 
using System.Linq; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.HtmlControls; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Xml.Linq; 
using System.IO; 
public partial class Expt_Image2 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     string[] files = Directory.GetFiles(MapPath("~/Image/")); 
     Image im = new Image(); 
     im.ImageUrl = files[1]; 
     im.AlternateText = files[1]; 
     form1.Controls.Add(im); 
    } 
} 
+0

如果您檢查呈現的HTML,它期望映像位於何處?這實際上是圖像的位置嗎? – Fishcake 2011-02-14 09:17:55

+0

嗨主要點是安全,如果任何web應用程序被允許訪問系統目錄以外的允許的[從哪裏運行應用程序的文件夾稱爲根〜],然後任何代碼可以刪除任何文件,服務器上的文件夾,你知道會有超過一個託管在您的服務器和服務器系統配置上的網站將不允許您訪問〜及其子文件夾之外的任何內容。 – Learner 2011-02-14 12:47:08

回答

1

,在你的Page_Load方法你會得到你的形象的第一個錯誤並將其存儲在數組中。在C#中,數組中項目的索引從0開始,而不是從1開始。

其次,您必須指定Image控件的屬性ImageUrl的虛擬路徑。

這是正確的Page_Load方法:

protected void Page_Load(object sender, EventArgs e) 
{ 
    string[] files = Directory.GetFiles(MapPath("~/Image/")); 
    Image im = new Image(); 
    im.ImageUrl = "~/Image/" + Path.GetFileName(files[ 0 ]); 
    im.AlternateText = files[ 0 ]; 
    im.Height = 100; 
    im.Width = 100; 
    form1.Controls.Add(im); 
} 
1

不MapPath方法返回文件的物理位置。在你的情況下,像C:\ inetpub \ wwwroot \ mysite \ image

而你想要的虛擬路徑例如。 http://mysite/image/image1.png

像這樣的東西應該工作:

DirectoryInfo di = new DirectoryInfo(MapPath("~/Image/")); 
    FileInfo[] files = di.GetFiles();   

    Image im = new Image(); 
    im.ImageUrl = "~/Image/" + files[0].Name; 
    im.AlternateText = "~/Image/" + files[0].Name; 
    form1.Controls.Add(im); 
1

使用應用程序的路徑,

Request.ApplicationPath + "~/Image/" 

這將解決這個問題。

還有一件事。你不需要在路徑前加「〜」。

相關問題