Сохранение данных на веб-странице при переключении с одной страницы на другую в ASP.NET ?

#c# #asp.net #switching

#c# #asp.net #переключение

Вопрос:

Я новичок в ASP.NET. Я разрабатываю пользовательский интерфейс в Asp.NET и C #, где пользователь может войти в систему, а затем запустить приложение. При использовании этого приложения пользователь должен заполнить форму длиной в 10 страниц.

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

Проблема в том, что он переходит на другую страницу, щелкнув вкладку меню; когда он возвращается на первую страницу, используя вкладку меню для этой страницы, все заполненные данные исчезают, и он видит пустую страницу. Я знаю, как это работает, но я хочу, чтобы это было таким образом, чтобы за один присест, когда он заполняет данные на второй странице (после заполнения данных на первой странице), возвращаясь к первой странице, он мог видеть данные, которые он заполнил.

Какую концепцию я могу использовать? Я не уверен, что состояние просмотра будет полезно в этом сценарии.

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

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

Ответ №1:

Вам следует изучить возможность использования переменной состояния сеанса для хранения его информации в течение всего сеанса. Если пользователь вошел в систему, вам следует подумать о сохранении его информации, которую он вводит, в базе данных и о логическом состоянии «ApplicationFinished», чтобы проверить, завершил ли он это или нет. В противном случае у меня был бы вызов на каждой странице для извлечения информации из базы данных, которая уже была добавлена, чтобы он мог заполнять информацию на разных заседаниях или все сразу.

http://msdn.microsoft.com/en-us/library/ms178581.aspx

Состояние сеанса может быть для вас слишком длительным, и если это так, проведите некоторое исследование ViewState. Существует множество различных способов решения подобной проблемы. Все зависит от того, какая технология лучше всего соответствует вашим потребностям.

http://msdn.microsoft.com/en-us/library/ms972976.aspx

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

http://www.dynamicdrive.com/dynamicindex17/ajaxtabscontent/

Ответ №2:

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

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

Ответ №3:

Пока вы изучаете новые вещи… добавьте jquery в список и используйте подключаемый модуль jQuery Wizard. Это позволит вам интегрировать вашу «10-страничную форму» в единый блок, который затем можно будет легче подразделять, маршрутизировать и управлять им. Вы можете использовать AJAX для сохранения каждого шага, предлагая встроенные методы навигации и проверки.

Ответ №4:

Я бы посоветовал вам переключиться на использование клиентского javascript для управления вашими вкладками. Таким образом, данные вашей формы остаются в полях при переключении между вкладками. Вы можете использовать кнопки javascript, чтобы направлять пользователя от вкладки к вкладке.

Я сделал это с помощью jQuery. На самом деле у меня было 150 полей, которые нужно было записать (все они были обязательными). Я группирую похожие данные на разных вкладках, а затем у меня были кнопки (‘< Предыдущий’, ‘Следующий>’), которые активировали бы разные вкладки.

Когда они будут выполнены, затем отобразите кнопку «Сохранить».

Ответ №5:

Это не то, что вы ищете, но если ваша проблема в том, что вы хотите, чтобы весь ввод ранее заполненной страницы отображался, когда пользователь возвращается к ней, и вы уже сохранили всю эту информацию, тогда вы можете попробовать что-то вроде этого:

HTML

<input type="text" id="yourID" name = "yourName" value = "<%=data%>"/>

Затем все, что вам нужно сделать, это установить data значение public в коде позади. Затем, чтобы получить значение для data , просто выполните вызов вашей базы данных.

Убедитесь, что при вызове init установлено значение data empty public string data = ""; или любого другого его типа. Таким образом, если информации нет, то она будет пустой, а если есть сохраненная информация, то она будет заполнена.

Вы также можете попытаться передать все данные через params в url вот так:

C#

Response.Redirect("webpage.aspx?data=" data "amp;data1=" data1);

Или через javascript:

window.location = ("webpage.aspx?data=" data "amp;data1=" data1);

Чтобы получить запрос, сделайте это:

 if (Request.Params.AllKeys.Contains("data"))
{
   data = Request.Params["data"];    
}
  

Этот способ менее идеален, хотя, если передается много данных.