繁体   English   中英

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

[英]How do you get the current image name from an ASP.Net website?

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

您可以将数据存储在页面的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陷阱有所帮助。

int num = 1;

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

Session["ImageNumber"] = num;

您必须将最后一个值隐藏在HiddenField或ViewState或类似的地方...

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

这取决于您希望其保留(记住)最后一次查看的值的时间。 我的首选是SESSION。

@chakrit

刷新页面真的有效吗?

我以为viewstate已存储在页面上,必须在回发时发送到服务器,并且刷新不会发生。

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

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

仅供参考,我建议您使用ViewState词典而不是Session,因为该变量仅单个页面内使用,因此它不应该使用整个会话范围的变量,这是一种不好的做法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM