如果在ASP.Net中绕过Statement

时间:2013-12-26 05:57:09

标签: c# asp.net webforms

我是.Net的新手。这可能是一个愚蠢的问题,但请耐心等待。我不知道出了什么问题,但服务器脚本中的'if'语句被绕过了。我使用网页表格。你能告诉我一个解决方案吗?

<%@ Page Language="C#" %>

<!DOCTYPE html>

<script runat="server">

protected void btnCalculate_Click(object sender, EventArgs e)
{
    int price = 0;
    int fee = Convert.ToInt32(ddlCourses.SelectedItem.Value);
    price += fee;

    if (rbMorning.Checked || rbAfternoon.Checked)
        price -= fee * (10 / 100);

    if (cbMaterial.Checked)
        price += fee * (10 / 100);

    lblMsg.Text = "Total Fee: " + price;


}
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>CoursesApp 1.0</title>
</head>
<body>
<form id="form1" runat="server">
    <div>
        <h3>Courses Application</h3>

        <br />
        <asp:DropDownList ID="ddlCourses" runat="server">
            <asp:ListItem Value="3000">Java SE</asp:ListItem>
            <asp:ListItem Value="4500">Java EE</asp:ListItem>
            <asp:ListItem Value="6000">.Net</asp:ListItem>
            <asp:ListItem Value="3000">Oracle DB</asp:ListItem>
        </asp:DropDownList>
        <br />
        <br />
        <asp:RadioButton ID="rbMorning" runat="server" Text="Morning" Checked="True" GroupName="timing" />
        <asp:RadioButton ID="rbAfternoon" runat="server" Text="Afternoon" GroupName="timing" />
        <asp:RadioButton ID="rbEvening" runat="server" Text="Evening" GroupName="timing" />
        <br />
        <br />
        <asp:CheckBox ID="cbMaterial" runat="server" Text="Material" />
        <br />
        <br />
        <asp:Button ID="btnCalculate" runat="server" OnClick="btnCalculate_Click" Text="Calculate" />
        <br />
        <br />
        <asp:Label ID="lblMsg" runat="server"></asp:Label>

    </div>
   </form>
</body>
</html>

2 个答案:

答案 0 :(得分:6)

问题:你的表达式总是0当你除(10/100)时,当乘以零加费时它将再次为零,因此没有减法或加法将发生。

解决方案:您需要multiply fee 10,然后divide 100

试试这个:

    if (rbMorning.Checked || rbAfternoon.Checked)
        price -= (10 * fee / 100);

    if (cbMaterial.Checked)
        price += (10 * fee / 100);

答案 1 :(得分:3)

我想补充一点,但是Sudhakar已经给出了(10/100)产生0的答案,因为编译器隐含地将10100作为Int在调试类型时,你可以检查它。 因此,任何余数为非零的数字都将四舍五入为最接近的整数,在这种情况下它将为零。

你可以做sudhakar的答案或解决方法是让编译器通过将double定义为10并将100定义为100.0 10.0类型中的这两个数字>

if (rbMorning.Checked || rbAfternoon.Checked)
    price -= fee * (10.0 / 100.0);

if (cbMaterial.Checked)
    price += fee * (10.0 / 100.0);