如何从ASP.Net网站获取当前图像名称?
场景:您有一个应显示一系列图像中下一张图像的ASP.Net网页。如果1.jpg当前已加载,则刷新应加载2.jpg。
假设我会使用这段代码,你从哪里得到当前的图像名称。如何从ASP.Net网站获取当前图像名称?
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。
因此,在加载页面的过程中,是否可以从页面属性中拉出最后使用的图像?
int num = 1;
if(Session["ImageNumber"] != null)
{
num = Convert.ToInt32(Session["ImageNumber"]) + 1;
}
Session["ImageNumber"] = num;
你必须隐藏在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和网络形式是如何工作的,你应该从一开始读this MSDN article
了解的ViewState将有很多ASP.NET的帮助陷阱以及。
如果您需要将图像更改为序列中的下一个图像(如果按F5或类似的刷新按钮),则需要将最后的图像ID或其他内容存储在服务器端存储器或cookie中。使用会话变量或类似的。
这取决于你想要它持续多久(记住)最后查看的值。我最喜欢的选择是SESSION。
@chakrit
如果刷新页面,这是否真的有效?
我认为视图状态存储在页面上,并且必须在回发时发送到服务器,刷新不会发生。
@John ah对不起,我认为你的“刷新”意味着回传。
在这种情况下,只需使用Session变量即可。我建议你使用ViewState字典而不是Session,因为变量只用于那单页,所以它不应该使用会话范围的变量,这是不好的做法。