我是.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>
答案 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
的答案,因为编译器隐含地将10
和100
作为Int
在调试类型时,你可以检查它。
因此,任何余数为非零的数字都将四舍五入为最接近的整数,在这种情况下它将为零。
你可以做sudhakar的答案或解决方法是让编译器通过将double
定义为10
并将100定义为100.0
if (rbMorning.Checked || rbAfternoon.Checked)
price -= fee * (10.0 / 100.0);
if (cbMaterial.Checked)
price += fee * (10.0 / 100.0);