Состояние просмотра DNN 5

#viewstate #dotnetnuke

#состояние просмотра #dotnetnuke

Вопрос:

привет,

Я работаю над модулем DotNetNuke 5, который в основном состоит из трех страниц; шаг 1, шаг 2 и шаг 3.

На шаге 1 я показываю GridView со столбцом флажков и кнопкой, которая должна перенаправить пользователя к шагу 2.

На шаге 2 я также показываю GridView, в котором отображаются элементы, которые были выбраны на шаге 1.

Мои вопросы:

  • Каков наилучший способ передать мой выбор с шага 1 на шаг 2? Состояние просмотра? URL-параметры?

    Я попробовал на шаге 1: ViewState[«SelectedItems»] = строка.Присоединиться («,», список.toArray()); НА шаге 2: я сделал:

      var items = (string)ViewState["SelectedItems"];
      

И я обнаружил, что элементы содержат пустую строку. Поддерживается ли состояние просмотра DNN5?

  • Встроенный ASP.Net wizard control не обеспечивает достаточной гибкости для настройки своего внешнего вида и, следовательно, он не используется. Возможно, DotNetNuke предлагает альтернативу для ASP.NET WizardControl?

Спасибо!

Ответ №1:

ViewState определенно поддерживается в DNN. Однако, если вы на самом деле настроили разные страницы для каждого шага, ViewState он не будет доступен (он сохраняется только при обратной передаче).

Если вы предпочитаете сохранить трехстраничную схему, используйте параметры URL, если это, вероятно, проще всего. Если это неприемлемо, то вам придется сохранить информацию либо в cookie, либо в базе данных, либо в Session .

Если вы хотите объединить свои шаги в один элемент управления и использовать обратную передачу вместо перенаправления, то вы можете использовать ViewState . Я не думаю, что DNN предоставляет свои элементы управления wizard framework, но вы можете использовать MultiView элемент управления или что-то подобное для переключения между различными шагами более вручную.

Комментарии:

1. msdn-Как передавать значения между ASP.NET Веб-страницы сочли это хорошим ресурсом для более расширенного чтения.

Ответ №2:

На мой взгляд, вам понадобится 1 сингл.ASCX для вашего модуля DNN, но вам понадобятся три панели внутри, по одной для каждого шага. Я бы назвал панели Panel_Step1, Panel_Step2 и Panel_Step3. Шаги 2 и 3 изначально будут скрыты.

Каждая панель будет содержать все элементы управления и графику для соответствующего шага мастера.

Итак, когда пользователь нажимает кнопку «Следующий шаг», чтобы перейти от шага 1 к шагу 2, ваш код скроет Panel_Step1 и покажет Panel_Step2. Вам понадобится функция инициализации для Panel_Step2. Давайте назовем это InitStep2().

Внутри этой функции InitStep2 () вы сможете анализировать значения и выборки, сделанные пользователем на шаге 1, путем анализа направления управляющих значений.

Пример: Textbox_Step1_Name.text, выпадающий список_step1_state.Выбранное значение и т.д.

Эти значения действительно хранятся в viewstate.

Выполнение мастера таким образом на самом деле ничем не отличается от выполнения его с использованием .ASCX за пределами DNN. У вас есть доступ к состоянию просмотра, сеансу и многому другому.