2009-10-26 4 views
1

Я разрабатываю проект в ASP.Net (C#). Мое определение проекта - система бронирования онлайн-путешествий.Проблема состояния сеанса

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

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

Это срочно. Может ли кто-нибудь помочь мне решить эту проблему?

Спасибо.

ответ

1

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

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

1

Словарь может хорошо работать для вашего приложения
http://msdn.microsoft.com/en-us/library/xfhwa508.aspx

В psuedocode:

// Read the selected seats and store them 
OnCheckChanged(...) 
{ 
    Dictionary<Route,Seat> reservedSeats = Session["reservedSeats"] as Dictionary<Route,Seat>; 
    reservedSeats[Current Route] = Selected Seat; 
    Session["reservedSeats"] = reservedSeats; 
} 

// Show the selected seats when they come to a specific route 
OnLoad(...) 
{ 
    Dictionary<Route,Seat> reservedSeats = Session["reservedSeats"] as Dictionary<Route,Seat>; 
    SetSeatSelection(reservedSeats[Current Route]); 
} 

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

Хотя вы можете просто сохранить его в базе данных, если хотите, чтобы выбор запоминался между посещениями и т. Д.

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