2009-10-26 107 views
1

我在ASP.Net(c#)中开发一个项目。我的项目定义是在线旅行预订系统。会话状态的问题

在我的项目中有一个座位选择模块。当我使用复选框为特定路线选择特定座位时,我会为所选座位创建一个会话,以便如果我选择相同的路线,则不应显示所选座位。

我面临的问题是当我选择不同的路线时,我得到了一个我以前没有选择过的选定座位。

这是紧急的。任何人都可以帮我解决这个问题吗?

谢谢。

回答

1

您需要将座位占用绑定到每条路线 - 您可以使用或定义特殊的数据类型结构来保存此信息。您可以创建自己的结构或数组,以保存每条路线占用的每个座位的信息。您可以将此数据结构存储到会话中,并在需要时使用它。无论何时新座位被占用或预占座位被释放,您都需要更新会话中的数据结构。

你也可以使用数据库来存储我认为是更好的选择的信息。

1

的字典可能会为您的应用程序
http://msdn.microsoft.com/en-us/library/xfhwa508.aspx

工作以及在伪代码:

// 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]); 
} 

基本上,你可以在会话中存储的字典对象与每个路由一个条目。每个会话都是特定用户特定的,所以这应该就足够了。

虽然如果您希望在访问之间记住选择内容,您可能需要将其存储在数据库中。