我正在使用两个图片标签。在一个中,使用的路径是相对的,而在另一个中它是绝对的。绝对路径图像未显示。这是代码:
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 :(得分:1)
您的Page_Load
方法中的第一个错误是您获取图像并将其存储在数组中。在C#中,数组中的项目索引从0开始,而不是从1开始。
其次,您必须指定ImageUrl
控件的属性Image
的虚拟路径。
这是正确的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 :(得分: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);
答案 2 :(得分:1)
使用应用程序路径
Request.ApplicationPath + "~/Image/"
这将解决问题。
还有一件事。你不需要在路径前加上“〜”。