滑块中显示的随机图像
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);
}
我正在使用包含 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);
}