2013-02-19 3 views
2

Я работаю в asp.net webforms. Я собираю пользовательские входы в форме, например, Page1, содержащей несколько серверных элементов управления, таких как текстовые поля, комбинированные поля и переключатели. Когда пользователь нажимает кнопку «Сохранить», отображается новая страница, например «Страница 2», где отображаются все введенные значения для проверки. Страница2 отображается методом Server.Transfer ("~/Page2") в событии нажатия кнопки Page1. В Page2, введенному пользователем значения получаются путем чтения свойства ПредыдущаяСтраница, как показано ниже:Как сохранить предыдущие значения страницы в asp.net

var memberData = PreviousPage.dependentData; 

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

if (confirm('Are you sure to leave this page?')) { 
       window.history.back(1); 
      } 

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

Благодаря

+0

сессия, печенье, ViewState, строка запроса, все это зависит от чувствительности данных, и сколько данных есть is –

ответ

2

Вы должны сохранить эти ценности где-то так что обе страницы имеют доступ к ним. В большинстве случаев это делается в базе данных, но вы также можете использовать Session, Cache или даже Cookie, если хотите.

Поскольку это конкретный пользователь, я подозреваю, что Сессия - ваш лучший выбор. Создание простой структуры данных в соответствии с вашими данными и сохранить его в сессии:

public class UserData{ 
    public String Name {get; set;} 
    public Int32 Age {get; set;} 
} 

Затем, когда пользователь отправляет страницу:

var userData = new UserData(); 
userData.Name = //Get from form; 
userData.Age = //Get from form; 

HttpContext.Current.Session["UserData"] = userData; 

Тогда при загрузке вашей другой страницы:

var userData = HttpContext.Current.Session["UserData"] as UserData; 

if(userData != null){ 
    //Do some stuff! 
} 

Теперь ... есть оговорки с этим умом. Например, если вы запускаете это на нескольких серверах за load balancer, вам необходимо убедиться, что вы используете липкие сеансы или, по крайней мере, какие-то постоянные Session Provider.

Я предполагаю, что я говорю это сделать домашнее задание, прежде чем просто хлопнув это в ваше приложение :)

+0

Спасибо за ваши предложения. Если я изменю Server.Transfer() на Response.Redirect(), это поможет? – user466663

+0

@ user466663 - Это не имеет значения. Когда вы выполняете Server.Transfer(), он просто передает всю запрашиваемую информацию, связанную с исходным запросом, на новую страницу. Вам все равно придется использовать Session или какой-либо другой механизм для сохранения информации. – Josh

Смежные вопросы