滑块中显示的随机图像

Random Images Displayed In Slider

我正在使用包含 7 张图片的图片滑块。我的 ASP.NET Web Forms 应用程序中有一个名为 Slider 的文件夹,其中包含 50 张图像。每次我刷新或访问页面时,我希望滑块每次都从文件夹中的 50 张图片中填充 7 张不同的图片。

ASPX

<div class="slider">
                <div id="slider1">
                    <% Response.Write("<img src='" + chooseImage() + "' />");%>
                   <%-- <img border="0" src="Slider/B50.JPG" width="850" height="637" />
                    <img border="0" src="Slider/B51.JPG" width="850" height="637" />
                    <img border="0" src="Slider/C47.JPG" width="850" height="637" />
                    <img border="0" src="Slider/C43.JPG" width="850" height="637" />
                    <img border="0" src="Slider/E2.JPG" width="850" height="637" />
                    <img border="0" src="Slider/W5.JPG" width="850" height="637" />
                    <img border="0" src="Slider/M21.JPG" width="850" height="637" />--%>
                </div>
                <ul id="thumb"></ul>
                <div id='next' class="slider_next">
                    <img border="0" src="Images/next.png" width="57" height="57" alt="next image" /></div>
                <div id='prev' class="slider_prev">
                    <img border="0" src="Images/prev.png" width="57" height="57" alt="previous image" /></div>
            </div>
        </div>

之前我只有文件夹中 7 张图片的直接路径,但我希望它是随机的。

<% Response.Write("<img src='" + chooseImage() + "' />");%>

ASPX.CS

protected void Page_Load(object sender, EventArgs e)
        {
            chooseImage();
        }
        public string chooseImage()
        {
            if (Session["img"] == null)
            {
                string imgPath;
                int fileCount = Directory.GetFiles(Server.MapPath("Slider/"), "*.*", SearchOption.TopDirectoryOnly).Length;
                fileCount = fileCount + 1;
                imgPath = "Slider/" + RandomNumber(1, fileCount) + ".jpg";
                Session["img"] = imgPath;
                return imgPath;
            }
            else
                return Session["img"].ToString();
        }
        private int RandomNumber(int min, int max)
        {
            Random random = new Random();
            return random.Next(min, max);
        }

当我 运行 应用程序时,滑块中没有显示图像。

滑块文件夹

获取imgPath时,需要解析url,使其对客户端有效。这可以通过 Control.ResolveUrl 方法完成:

imgPath = ResolveUrl("Slider/" + RandomNumber(1, fileCount) + ".jpg");

如果图片来源无效,则不会显示任何图片。

但是,一旦您解决了 url,所有图像可能都是相同的,因为您正在将结果缓存到 Session["img"]。为了每次都获得随机图像,只需删除 if 语句和 else 正文。

你也应该改变你的

Random random = new Random();

实例变量或静态变量的局部变量声明,如本 Whosebug question.

中所讨论

Edit:您可能应该重写 chooseImage() 方法以获取目录 "Slider" 中的任何文件。目前,它只会 return 路径,例如 "Slider/1.jpg" 和 "Slider/2.jpg".

public string chooseImage()
{
    string[] files = Directory.GetFiles(Server.MapPath("Slider/"), "*.*", SearchOption.TopDirectoryOnly);
    int fileCount = files.Length;
    string fileName = Path.GetFileName(files[RandomNumber(0, fileCount)]);
    return "Slider/" + fileName; // or return ResolveUrl("Slider/" + fileName);
}