Ссылка на раскрывающийся список опций

Можете ли вы дать ссылку на конкретное значение в раскрывающемся списке параметров с другой страницы?

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

Можно ли сделать ссылку на страницу 2 и изменить значение этого параметра на лету? В то время как при нажатии на ссылку на странице 1 автоматически отображается значение 3 вместо 1 на странице 2.


person arcadian    schedule 18.05.2009    source источник


Ответы (2)


Это, безусловно, возможно. Вы можете передать флаг в своей строке запроса. Итак, на странице 1 у вас есть ссылка на страницу 2, например «page2.aspx?option=3». Затем в методе PageLoad страницы2 просто прочитайте это значение из строки запроса (Request.QueryString["option"]) и соответствующим образом установите выбранный элемент DropDownList.

Одна страница1 у вас была бы...

<a href="page2.aspx?option=3">link to page 2</a>

В коде page2, на примере Ала...

void Page_Load(object sender, EventArgs e) {
   if (!Page.IsPostBack) {
      int option;
      if(int.TryParse(Request.QueryString["option"], out option) { //Only set the value if it is actually an integer
         ddlList.SelectedIndex = option;
      }
   }
}
person Jonathan Freeland    schedule 18.05.2009
comment
Спасибо Джон за ваш ответ. Я новичок в asp.net. Можете ли вы дать мне пример кода для того, что вы только что описали? - person arcadian; 18.05.2009

Ответ Джона Фриланда в основном таков, как я бы это сделал. Возможно, вы захотите поместить код для установки индекса списка в класс отделенного кода внутри функции Page_Load.

Вы также можете сохранить значение параметра для установки в сеансе ASP.Net, но это становится немного сложнее, если вы начинаете позволять пользователю перемещаться по сайту. Они могут вернуться на страницу 2, а переменная сеанса по-прежнему будет иметь неожиданное значение. Кроме того, у вас могут возникнуть проблемы с удалением сеанса, если пользователь какое-то время неактивен или если сервер перезагружен. С положительной стороны, если вы поместите его в объект Session, вы сможете перемещаться между своими страницами и держать все необходимые данные под рукой.

Если вы хотите увидеть образец, попробуйте что-то вроде:


void Page_Load (object sender, EventArgs e) {
   if (! Page.IsPostBack) {
     ddlList.SelectedIndex = Request.QueryString["option"]
   }

Вы хотите поместить код в раздел !IsPostBack, чтобы он запускался только при первом переходе пользователя на страницу.

person Al Crowley    schedule 18.05.2009