相当一点看这个。
我有一个带有Image控件的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)];
答案 0 :(得分:2)
您的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);
答案 1 :(得分:1)
在结果页面上执行查看源,看看<img src="...">
是否设置为合理值。
在进一步调查中,似乎ResolveClientUrl采用相对网址,而不是绝对文件系统路径。因此RandomImage
应返回类似:
return AppSettings.imageUrl + "/" + Path.GetFileName(files[rand.Next(files.Length)]);
答案 2 :(得分:0)
您正在获取文件名。 Directory.GetFiles也可以在非Web应用程序中使用,因此将文件视为相对于您的网站根目录是没有意义的。
您可以做的是获取您网站根目录的本地路径,如下所示:
string root = Request.MapPath("~/");
然后从您选择的文件中删除该子字符串:
files[rand.Next(files.Length)].Replace(root, string.Empty);
这就是你所需要的一切。