我有一个确定矩形区域的应用程序。用户通过两个文本字段输入宽度和长度,并通过按钮单击显示结果。我希望用户能够输入十进制或整数值。
前端:
<div>
Enter Value 1: <asp:TextBox ID="length_txt" runat="server"></asp:TextBox><br />
Enter Value 2: <asp:TextBox ID="width_txt" runat="server"></asp:TextBox><br />
<asp:Button ID="button1" runat="server" Text="submit" onclick="button1_Click" /><br />
<asp:Label ID="area_lbl" runat="server"></asp:Label>
<br />
</div>
后端
protected void button1_Click(object sender, EventArgs e)
{
//area_lbl.Text = Convert.ToString(Convert.ToInt32(length_txt.Text) * Convert.ToInt32(width_txt.Text));
area_lbl.Text = Convert.ToString(Convert.ToDecimal(length_txt.Text) * Convert.ToDecimal(width_txt.Text));
}
...我的问题是,如何创建一个if语句来测试输入框是否有整数或十进制值?
答案 0 :(得分:2)
从未在用户输入上使用Convert.To<SomePrimitiveTypeHere>
如果输入无法转换,您将获得例外
.Net框架中的每个基本类型都有TryParse
方法 - 如果成功转换,它将返回true
,否则返回false。
那么,你的代码看起来应该是这样的:
protected void button1_Click(object sender, EventArgs e)
{
int intLength, intWidth;
Decimal decimalLength , decimalWidth;
if(int.TryParse(length_txt.Text, out intLength) && int.TryParse(width_txt.Text, out intWidth))
{
area_lbl.Text = (intLength * intWidth).ToString();
}
else if(Decimal.TryParse(length_txt.Text, out decimalLength) && Decimal.TryParse(width_txt.Text, out decimalWidth))
{
area_lbl.Text = (decimalLength * decimalWidth).ToString();
}
else
{
area_lbl.Text = "Invalid input!";
}
}
然而,正如NineBerry在他的comment中写道的那样,每个整数值都可以表示为十进制,你可以忽略第一个条件并简单地写一下:
if(Decimal.TryParse(length_txt.Text, out decimalLength) && Decimal.TryParse(width_txt.Text, out decimalWidth))
{
area_lbl.Text = (decimalLength * decimalWidth).ToString();
}
else
{
area_lbl.Text = "Invalid input!";
}