#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, чтобы данные оставались в формах даже при переходе по разным вкладкам.
Ответ №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"];
}
Этот способ менее идеален, хотя, если передается много данных.