【问题标题】:Calculation in code behind后面代码中的计算
【发布时间】:2012-07-30 01:38:22
【问题描述】:

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

感谢您的宝贵时间。干杯。

【问题讨论】:

  • 用户如何选择是否需要该服务?只需为此保留另一个会话变量。
  • 我在下拉列表中提供。用户可以选择是或否
  • 然后将下拉列表的选定选项也保存在会话中,并在下一页中使用。
  • 以这种方式使用 Session 变量似乎您需要重新考虑您的设计(除非无法避免)。我还建议重命名您的标识符。 Label1,Label2 什么都没有。

标签: c# asp.net


【解决方案1】:

将下拉值存储到另一个会话变量中,例如 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();

【讨论】:

  • 我不知道该怎么做。你能不能多解释一下。
【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:

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

    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
    

    【讨论】:

    • Chauffer 的状态可以是 true 或 false,因此您可以使用布尔值并将其存储在 Session 中,然后检查会话并在必要时添加 30 美元。你能准确指出你不明白的地方吗?
    • Act 我不知道如何在我的系统中编写代码。这太尴尬了。
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

      这样你可以同时使用iif equivalent in c#和ShowFerInUse。

      【讨论】:

        猜你喜欢
        • 2019-02-21
        • 2019-11-09
        • 1970-01-01
        • 1970-01-01
        • 2017-07-06
        • 2012-08-06
        • 2012-09-09
        • 2016-03-01
        • 2013-12-03
        相关资源
        最近更新 更多