Сохранение данных на веб-странице при переходе с одной страницы на другую в ASP.NET? - PullRequest
0 голосов
/ 27 апреля 2011

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

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

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

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

Ответы [ 5 ]

2 голосов
/ 27 апреля 2011

Вам следует использовать переменную Session State для хранения его информации в течение всего сеанса. Если пользователь вошел в систему, вам следует подумать о том, чтобы сохранить его информацию, которую он вводит в базу данных, и иметь логическое состояние «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/

0 голосов
/ 27 апреля 2011

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

HTML

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

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

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

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

C #

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

Или хотя бы JavaScript:

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

Для получения запроса сделайте следующее:

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

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

0 голосов
/ 27 апреля 2011

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

Я сделал это с помощью JQuery.У меня действительно было 150 полей, которые нужно было захватить (все они были обязательны).Я группировал данные на разных вкладках, а затем имел кнопки («<Предыдущий», «Далее>»), которые активировали бы разные вкладки.

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

0 голосов
/ 27 апреля 2011

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

0 голосов
/ 27 апреля 2011

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

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

...