如何从ASP.Net网站获取当前图像名称?
时间:2020-03-05 18:47:54 来源:igfitidea点击:
方案:我们有一个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。
因此,在加载页面的过程中,是否可以从页面属性中拉出最后使用的图像?
解决方案
回答
我们必须将最后一个值隐藏在HiddenField或者ViewState或者类似的地方...
回答
我们可以将数据存储在页面的" ViewState"字典中
因此,在Page_Load中,我们可以编写类似...
var lastPicNum = (int)ViewState["lastPic"]; lastPicNum++; MainPic.ImageUrl = string.Format("~/Images/{0}.jpg", lastPicNum); ViewState["lastPic"] = lastPicNum;
你应该知道。
而且,如果我们正在编程ASP.NET,但仍然不了解ViewState和Web窗体如何工作,则应阅读此MSDN文章。
从一开始就了解ViewState也会对许多ASP.NET陷阱有所帮助。
回答
如果我们在按F5或者类似的刷新按钮时需要将图像更改为序列中的下一个图像,则需要将最后一个图像ID或者其他内容存储在服务器端存储或者cookie中。使用会话变量或者类似变量。
回答
int num = 1; if(Session["ImageNumber"] != null) { num = Convert.ToInt32(Session["ImageNumber"]) + 1; } Session["ImageNumber"] = num;
回答
这取决于我们希望其保留(记住)最后一次查看的值的时间。我的首选是SESSION。
回答
@chakrit
刷新页面真的有效吗?
我以为viewstate已存储在页面上,必须在回发时发送到服务器,并且刷新不会发生。
回答
@John ah抱歉,我认为"刷新"意味着回发。
在这种情况下,只需使用Session变量即可。
仅供参考,我建议我们使用ViewState词典而不是Session,因为该变量仅在该单个页面内使用,因此它不应该使用整个会话范围的变量,这是一种不好的做法。