会话状态问题

时间:2009-10-26 04:57:09

标签: c# asp.net session checkbox

我正在ASP.Net(c#)开发一个项目。我的项目定义是在线旅行预订系统。

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

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

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

感谢。

2 个答案:

答案 0 :(得分:1)

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

您还可以使用数据库存储我认为更好的选择信息。

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

基本上,您可以在会话中存储字典对象,每个路径都有一个条目。每个会话特定于特定用户,因此这应该足够了。

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