后面的代码计算

司机服务费用为30美元。 用户可以选择是否需要该服务。 当他们已经选择汽车和租赁日时,我将它存储在会话中。

Session["car1"] = Label1.Text; Session["price"] = Label5.Text; Session["day"] = DropDownList3.SelectedItem.Text; Session["driver"] = Label6.Text; Response.Redirect("~/Welcome/BookingForm.aspx"); 

然后在bookingform.aspx中,我检索回会话,并在标签中显示它。

 string car1 = Session["car1"].ToString(); string price = Session["price"].ToString(); string day = Session["day"].ToString(); string driver = Session["driver"].ToString(); 

要计算用户应支付的总金额,我使用了以下代码:

 int totalValue = 0; totalValue = int.Parse(Session["price"].ToString()) * int.Parse(Session["day"].ToString()); Label8.Text = totalValue.ToString(); 

现在的问题是,我不知道如何为司机服务添加30美元用户选择该服务。 就像用户选择yes,totalValue + 30,如果没有,则什么都不做。

谢谢你的时间。 干杯。

为什么不创建自定义类,添加Car,Price,Day,ChaffterUsed等属性。创建类的对象,填充属性并将对象存储到会话中。 在下一页上,从会话加载对象并使用它。

将下拉值存储到另一个会话变量中,例如IsChaffeurUsed。 使它成为一个布尔值。

 bool IsChauffeurUsed= dropDown.SelectedValue=="Yes" ? true :false; Session["IsChauffeurUsed"]= IsChauffeurUsed; //Your logic to compute total int totalValue = 0; totalValue = int.Parse(Session["price"].ToString()) * int.Parse(Session["day"].ToString()); //check if chaffeur service is used bool isChaffeurUsed = (bool) Session["IsChaffeurUsed"]; if(isChaffeurUsed) { total += 30; } Label8.Text = (totalValue).ToString(); 

我建议使用Server.Transfer()而不是Response.Redirect()并使用PreviousPage来获取所需的值。

这将使您免于使用Session,因为在此方案中不应使用Session。

要知道如何使用PreviousPage,请参阅下面的链接。

http://msdn.microsoft.com/en-us/library/system.web.ui.page.previouspage.aspx

当您提供在下拉列表中选择服务时,为什么不在会话中存储该状态? 喜欢

 bool chauffeurService= YourServiceDropDown.SelectedValue=="1" ? true :false; Session["chauffeurStatus"]=chauffeurService; 

然后在表单内部处理值

 // Check if Chauffer service status is 1 add 30 dollars else don't add anything 

totalValue = int.Parse(Session [“price”]。ToString())* int.Parse(Session [“day”]。ToString())+ ShowFerInUse? 30:0;

这样你就可以在c#中使用iif等价物并同时做ShowFerInUse。