[英]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.