如何从ASP.Net网站获取当前图像名称?

时间:2008-09-04 21:08:28

标签: c# asp.net

场景:您有一个ASP.Net网页,该网页应显示一系列图像中的下一个图像。如果当前加载了1.jpg,则刷新应加载2.jpg 假设我将使用此代码,您在哪里获取当前图像名称。

string currImage = MainPic.ImageUrl.Replace(".jpg", "");  
currImage = currImage.Replace("~/Images/", "");

int num = (Convert.ToInt32(currImage) + 1) % 3;  
MainPic.ImageUrl = "~/Images/" + num.ToString() + ".jpg";

上述代码的问题在于使用的网页是默认网站,图片设置为1.jpg,因此加载的图片始终为2.jpg。
那么在加载页面的过程中,是否可以从页面属性中提取最后使用的图像?

7 个答案:

答案 0 :(得分:5)

您可以将数据存储在页面的ViewState词典

所以在你的Page_Load中,你可以写出类似......

的内容
var lastPicNum = (int)ViewState["lastPic"];
lastPicNum++;

MainPic.ImageUrl = string.Format("~/Images/{0}.jpg", lastPicNum);

ViewState["lastPic"] = lastPicNum;

你应该明白这一点。

如果您正在编程ASP.NET并且仍然不了解ViewState和Web表单的工作方式,那么您应该阅读this MSDN article

从一开始就了解ViewState也有助于解决很多ASP.NET问题。

答案 1 :(得分:5)

int num = 1;

if(Session["ImageNumber"] != null)
{
  num = Convert.ToInt32(Session["ImageNumber"]) + 1;
}

Session["ImageNumber"] = num;

答案 2 :(得分:0)

你必须隐藏HiddenField或ViewState中的最后一个值或类似的地方......

答案 3 :(得分:0)

如果您按F5或类似的刷新按钮需要将图像更改为序列中的下一个图像,则需要将最后一个图像ID或某些内容存储在服务器端存储或cookie中。使用Session变量或类似的。

答案 4 :(得分:0)

这取决于您希望它持续多长时间(记住)最后查看的值。我首选的选择是会议。

答案 5 :(得分:0)

@chakrit

如果刷新页面,这确实有效吗?

我认为viewstate存储在页面上,并且必须在回发时发送到服务器,并且没有发生刷新。

答案 6 :(得分:0)

@John啊抱歉,我认为你的“刷新”意味着回发。

在这种情况下,只需使用Session变量。

仅供参考,我建议您使用ViewState字典而不是Session,因为该变量仅在那个单页内使用,所以它不应该使用会话范围的变量,这是不好的做法。 / p>