2011-05-26 23 views
5

Utilizando C# en ASP.NET, deseo tomar el resultado de dos campos de texto, agregarlos cuando se presiona un botón, y mostrar el resultado. Sin embargo, si uno o ambos campos están vacíos, no deseo que se muestre ningún resultado.No utilice el valor predeterminado para el doble

Ahora mismo sigo obteniendo 0 como resultado si ambos campos están vacíos. Estoy bastante seguro de que esto se debe a que a los dos números de entrada (dobles) se les asigna un valor predeterminado 0. ¿Cómo puedo verificar si hay campos vacíos?

Este es mi método en mi controlador.

[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); 
    } 

Respuesta

11

Los dobles son tipos de valores y, por lo tanto, no se pueden asignar a nulos o "vacíos". Si desea esta capacidad, intente usar un doble nulo. O bien Nullable<double> o double? deberían funcionar.

Tenga en cuenta, utilizando un tipo de valor anulable tendrá que comprobar nula antes de usarla o arriesgarse a una NullReferenceException mientras double defecto 0 si no asignado.

+0

Gracias. Cambié mi "doble" a "¿doble?" Y funciona cuando no ingreso nada. Sin embargo, no estoy buscando errores y no está fallando. – Bill

+0

No me encontré con NullReferenceException para las pruebas que estaba haciendo. Estaba probando un método para ver si estaba asignando correctamente un nuevo valor a un doble. Para probar esto, comprobé con el valor predeterminado (doble) que solo funcionó para algunos de los métodos de esta clase (no hice la clase o tuve acceso a su fuente) pero cuando cambié mis valores de problema de doble a doble ?, y posteriormente mi comparación con el valor predeterminado (¿doble?), todo estaba bien en el reino una vez más. –

4

Use Double? ie nullable Doble, su valor predeterminado es nulo y solo asignará un valor si el cuadro de texto no está vacío y puede analizarlo.

2

Aquí hay una forma de determinar si uno o ambos campos están vacíos. Refactorice como necesite con sus variables particulares.

string one = txt1.Text; 
string two = txt2.Text; 

string result = (string.IsNullOrEmpty(one) || string.IsNullOrEmpty(two)) 
       ?string.Empty 
       :double.Parse(one) + double.Parse(two); 
Cuestiones relacionadas