在ASP.NET中显示随机图像的最佳方法是什么?

时间:2009-07-23 18:40:22

标签: asp.net image random

我所说的就像这个网站: http://www.ernesthemingwaycollection.com

它有一个静态壁纸和一组在页面之间变化的图像,我想实现一种类似的方法,使用ASP.NET从一组图像中显示随机图像。

编辑:我希望图片在会话中保持不变,并从会话更改为另一个会话。

3 个答案:

答案 0 :(得分:2)

您提到的网站未使用随机图片集。它们被编码到aspx页面的html端。

您可以在页面上放置一个asp Image控件。然后在页面的Page_Load函数中将图像设置为您的集合的随机图片。

protected void Page_Load(object sender, EventArgs e)
        {

            this.Image1.ImageUrl = "~/images/random3.jpg";
        }

您可以在不同的位置存储图像集数据。您可以使用数据库并将URL存储在表中。这将允许使用SQL中的内置Random函数。或者您可以将XML文件保存到服务器,加载然后使用Random .Net类来选择一个xml节点。

我个人会推荐数据库解决方案。

编辑:因为服务器会话在20分钟后被销毁,你可能想看看使用cookies,这样你就可以看到他们看到的最后一张随机图像。

答案 1 :(得分:2)

如果您只想旋转一定数量的图像,可以使用ASP.NET AdRotator control(最后,使用它!)。

如果你想做更好的事情,考虑使用jQuery幻灯片这样的jQuery Cycle Plugin。还有一个slideshow control in the AjaxControlToolkit,很容易整合。

答案 2 :(得分:0)

string imageDir = "/images/banner/";

public static string chooseImage(string imageDir)
        {
            string[] dirs = Directory.GetFiles(HttpContext.Current.Server.MapPath("~/images/" + imageDir + "/"), "*.*");
            Random RandString = new Random();

            string fileFullPath = dirs[RandString.Next(0, dirs.Length)];

            // Do not show Thumbs.db --- 
            string fileName = string.Empty;
            do
            {
                fileName = System.IO.Path.GetFileName(fileFullPath);

            } while (fileName.Contains(".db"));


            string imgPath = "/images/" + imageDir + "/" + fileName;
            return imgPath;
        }

        private int RandomNumber(int min, int max)
        {
            Random random = new Random();
            return random.Next(min, max);
        }