Как вы получаете текущее имя изображения с веб-сайта ASP.Net? - PullRequest
0 голосов
/ 05 сентября 2008

Сценарий: у вас есть веб-страница 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. Итак, в процессе загрузки страницы можно ли извлечь последнее использованное изображение из свойств страниц?

Ответы [ 7 ]

5 голосов
/ 05 сентября 2008
int num = 1;

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

Session["ImageNumber"] = num;
5 голосов
/ 05 сентября 2008

Вы можете хранить данные в словаре ViewState вашей страницы

Так что в вашей Page_Load вы могли бы написать что-то вроде ...

var lastPicNum = (int)ViewState["lastPic"];
lastPicNum++;

MainPic.ImageUrl = string.Format("~/Images/{0}.jpg", lastPicNum);

ViewState["lastPic"] = lastPicNum;

Вы должны понять.

И если вы программируете ASP.NET и до сих пор не понимаете, как работают ViewState и веб-формы, вам следует прочитать эту статью MSDN

Понимание ViewState с самого начала поможет с большим количеством проблем с ASP.NET.

0 голосов
/ 05 сентября 2008

@ Джон, ах Извините, я думал, что ваше "обновление" означало постбэки.

В этом случае просто используйте переменную Session.

К вашему сведению, я предложил вам использовать словарь ViewState вместо Session, потому что переменная используется только на этой отдельной странице, поэтому не следует использовать переменную всего сеанса, это плохая практика. *

0 голосов
/ 05 сентября 2008

@ chakrit

действительно ли это работает при обновлении страницы?

я думал, что состояние просмотра было сохранено на странице, и его нужно было отправить на сервер при обратной передаче с обновлением, которое не происходит.

0 голосов
/ 05 сентября 2008

Это зависит от того, как долго вы хотите, чтобы оно сохранялось (запоминало) последнее просмотренное значение. Мой предпочтительный выбор будет СЕССИЯ.

0 голосов
/ 05 сентября 2008

Если вам нужно изменить изображения на следующее в последовательности, если вы нажмете F5 или аналогичную кнопку обновления, то вам нужно сохранить последний идентификатор изображения или что-то в хранилище на стороне сервера или в файле cookie. Используйте переменную Session или подобное.

0 голосов
/ 05 сентября 2008

Вам придется скрыть последнее значение в HiddenField или ViewState или где-то в этом роде ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...