问题描述
|
我想在ASP.NET中使用C#,获取两个文本字段的结果,在按下按钮时将它们添加,然后显示结果。但是,如果一个或两个字段为空,则我不希望显示任何结果。
现在,如果两个字段都为空,则结果一直为0。我非常确定这是因为两个输入数字(双精度数)被分配了默认值0。如何检查空白字段?
这是我控制器中的方法。
[HttpPost]
public ActionResult french(frenchModel model,string returnUrl)
{
switch (model.operation)
{
case 1:
model.result = model.numberOne + model.numberTwo;
break;
case 2:
model.result = model.numberOne - model.numberTwo;
break;
case 3:
model.result = model.numberOne * model.numberTwo;
break;
case 4:
model.result = model.numberOne / model.numberTwo;
break;
}
return View(model);
}
解决方法
双精度是值类型,因此不能分配为null或\“ empty \”。如果需要此功能,请尝试使用可为null的double。
Nullable<double>
或double?
应该都可以。
请注意,使用可为空的值类型时,您将需要先检查它是否为null,否则将冒一个NullReferenceException
的风险,而如果未分配,则double
默认为0
。
,使用Double?
(即可以为null的Double),其默认值为null,并且仅当文本框不为空且可以解析时,您才分配一个值。
,这是确定一个或两个字段是否为空的一种方法。根据需要使用特定变量进行重构。
string one = txt1.Text;
string two = txt2.Text;
string result = (string.IsNullOrEmpty(one) || string.IsNullOrEmpty(two))
?string.Empty
:double.Parse(one) + double.Parse(two);
,您可以使用if语句:
if (operand1 != 0) { // do something.. }
else { // do something.. }
您也可以为第二个操作数执行此操作。
例:
https://www.dropbox.com/s/snvonqubqpkue99/Form1.cs?dl=0