在C#ASP.NET中随机映射图像

时间:2011-10-27 21:03:39

标签: c# asp.net

相当一点看这个。

我有一个带有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)];

3 个答案:

答案 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);

这就是你所需要的一切。