#c# #asp.net #default-value
#c# #asp.net #значение по умолчанию
Вопрос:
Использование C # в ASP.NET я хочу взять результат двух текстовых полей, добавить их при нажатии кнопки и отобразить результат. Однако, если одно или оба поля пусты, я не хочу, чтобы отображался какой-либо результат.
Прямо сейчас я продолжаю получать 0 в качестве результата, если оба поля пусты. Я почти уверен, что это потому, что двум входным числам (double) присваивается значение по умолчанию 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);
}
Ответ №1:
Double — это типы значений, и поэтому ему нельзя присвоить значение null или «empty». Если вам нужна эта возможность, попробуйте использовать значение double с нулевым значением. Либо Nullable<double>
, либо double?
должно сработать.
Имейте в виду, что при использовании типа значения с возможностью обнуления вам нужно будет проверить его на значение null, прежде чем использовать его, иначе вы рискуете, NullReferenceException
тогда как double
значение по умолчанию равно 0
, если оно не назначено.
Комментарии:
1. Спасибо. Я переключил свой «double» на «double?», и это работает, когда ничего не вводится. Тем не менее, я не проверяю наличие ошибок, и это не сбой.
2. Я не столкнулся с NullReferenceException для тестирования, которое я проводил. Я тестировал метод, чтобы проверить, правильно ли он присваивает новое значение double. Чтобы проверить это, я проверил значение по умолчанию (double), которое работало только для некоторых методов этого класса (я не создавал класс и не имел доступа к его исходному коду), но когда я изменил свои проблемные значения с double на double? , а затем мое сравнение с default (double?), в королевстве снова все было в порядке.
Ответ №2:
Используйте Double?
ie с нулевым значением Double, его значение по умолчанию равно null, и вы будете присваивать значение, только если текстовое поле не пустое и вы можете его проанализировать.
Ответ №3:
Вот один из способов определить, являются ли одно или оба поля пустыми. Реорганизуйте, как вам нужно, с вашими конкретными переменными.
string one = txt1.Text;
string two = txt2.Text;
string result = (string.IsNullOrEmpty(one) || string.IsNullOrEmpty(two))
?string.Empty
:double.Parse(one) double.Parse(two);
Ответ №4:
Вы можете использовать инструкции if:
if (operand1 != 0) { // do something.. }
else { // do something.. }
Вы также можете сделать это для второго операнда