C# 在ASP.Net中绕过If语句
我不熟悉.Net。这可能是一个愚蠢的问题,但是,请容忍我。我不知道哪里出错了,但是服务器脚本中的“if”语句被忽略了。我使用网络表单。你能告诉我一个解决办法吗C# 在ASP.Net中绕过If语句,c#,asp.net,webforms,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;
<%@ 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>
受保护的无效btnCalculate\u单击(对象发送者,事件参数e)
{
国际价格=0;
int-fee=Convert.ToInt32(ddlCourses.SelectedItem.Value);
价格+=费用;
如果(rbMorning.Checked | | rbAfternoon.Checked)
价格-=费用*(10/100);
如果(CBM材料检查)
价格+=费用*(10/100);
lblMsg.Text=“总费用:”+价格;
}
课程第1.0页
课程申请
爪哇SE
爪哇EE
网
五险合一系统
我想补充一件事,但是Sudhakar已经给出了答案,(10/100)
产生0
,因为编译器隐式地将10
和100
作为Int
类型,您可以在调试类型时检查它。
因此,余数为非零的任何数字都将四舍五入到最接近的整数,在您的情况下,它将为零
您可以按照sudhakar的答案来做,或者一个解决方法是通过将10
定义为10.0
并将100定义为100.0,让编译器知道您希望这两个数字是double
类型
if (rbMorning.Checked || rbAfternoon.Checked)
price -= fee * (10.0 / 100.0);
if (cbMaterial.Checked)
price += fee * (10.0 / 100.0);
问题:您的表达式在除法时总是为
0
,(10/100)
并且当将零与费相乘时,它将再次为零,因此不会发生减法或加法
解决方案:您需要将费用
乘以10
,然后除以100
试试这个:
if (rbMorning.Checked || rbAfternoon.Checked)
price -= (10 * fee / 100);
if (cbMaterial.Checked)
price += (10 * fee / 100);
放置断点并检查上午是否<代码>RB。下午是否检查<代码>和<代码>RB。检查<代码>是否有值。@madan哪个给定的if语句被绕过?哪个<代码>如果<代码>?代码中有两个if
s。此外,如果您认为它正在跳过,那么它为lblMsg.Text
显示了什么?你的用例是什么?它们都被绕过了。安库什·马丹卡:我查过了。它将返回值。您在这里做了哪些更改???@sudhakardipudi+!1好的catch@Amarnath:谢谢你的支持:)@SurajSingh:谢谢you@Suraj辛格:是的,这也是一个不错的选择。“谢谢你。”苏拉辛格解释得很好