0

司机服务费用为 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,如果NO,什么都不做。

谢谢你的时间。干杯。

4

5 回答 5

4

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

于 2012-08-01T07:38:36.263 回答
3

将下拉值存储到另一个会话变量中,例如 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();
于 2012-08-01T07:35:14.933 回答
0

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

这将使您免于使用 Session,因为 Session 不应该在这种情况下使用。

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

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

于 2012-08-01T07:37:26.570 回答
0

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

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
于 2012-08-01T07:38:30.223 回答
0

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

这样,您可以在 c# 中使用 iif 等效项并同时执行 ShowFerInUse。

于 2012-08-01T07:40:31.223 回答