看了不少。
我有一个aspx网页上的图像控制,我想加载图像从我的web目录随机显示在图像控制。下面是代码,以及我已经完成了多少。
似乎是一个简单的任务,随机请求一个图像文件,并显示在一个网页上,所有我收到然而是一个本地文件路径(这似乎是没有用的图像控制)和网页上没有图像。
AppSettings。imageUrl返回:"~/Images"
如有任何建议,不胜感激。
protected void Page_Load(object sender, EventArgs e)
{
GetImage();
}
private void GetImage()
{
imgMain.ImageUrl = ResolveClientUrl(RandomImage());
}
private string RandomImage()
{
string mapPath = Request.MapPath(AppSettings.imageUrl);
var rand = new Random();
var files = Directory.GetFiles(mapPath);
return files[rand.Next(files.Length)];
你的RandomImage()方法可能没有返回相对于当前页面的文件路径。要么返回
string fileName = Path.GetFileName(file[rand.Next(files.Length)]);
return AppSettings.imageUrl + fileName;
然后解析或者马上解析
string fileName = Path.GetFileName(file[rand.Next(files.Length)]);
return Request.MapPath(AppSettings.imageUrl + fileName);
在结果页面上查看源代码,看看<img src="...">
是否被设置为一个合理的值。
进一步调查发现,ResolveClientUrl似乎接受一个相对 URL,而不是一个绝对的文件系统路径。因此,RandomImage
应该返回如下内容:
return AppSettings.imageUrl + "/" + Path.GetFileName(files[rand.Next(files.Length)]);
您正在获取文件名。的目录。GetFiles也可以在非web应用程序中使用,因此将文件视为相对于您的网站根文件是没有意义的。
你能做的就是像这样得到你的站点的根目录的本地路径:
string root = Request.MapPath("~/");
,然后从您选择的文件中删除该子字符串:
files[rand.Next(files.Length)].Replace(root, string.Empty);