场景:您有一个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。
那么在加载页面的过程中,是否可以从页面属性中提取最后使用的图像?
答案 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>