2010-09-20 12 views
8

Tenía mis acciones ASP.NET MVC escrito así:acciones MVC JSON que regresan bool

// 
    // GET: /TaxStatements/CalculateTax/{prettyId} 
    public ActionResult CalculateTax(int prettyId) 
    { 
     if (prettyId == 0) 
      return Json(true, JsonRequestBehavior.AllowGet); 

     TaxStatement selected = _repository.Load(prettyId); 
     return Json(selected.calculateTax, JsonRequestBehavior.AllowGet); // calculateTax is of type bool 
    } 

he tenido problemas con esto porque cuando se utiliza en funciones de jQuery que tenía todo tipo de errores, sobre todo toLowerCase() función fallar .

así que tuve que cambiar las acciones de una manera que regresan bool como cadena (llamando ToString() en valores bool), por lo que el retorno de thay true o false (en los qoutes) pero un poco no les gusta.

¿Cómo manejan los demás este tipo de casos?

Respuesta

15

yo usaría objeto anónimo (recordemos que es un JSON pares clave/valor):

public ActionResult CalculateTax(int prettyId) 
{ 
    if (prettyId == 0) 
    { 
     return Json(
      new { isCalculateTax = true }, 
      JsonRequestBehavior.AllowGet 
     ); 
    } 

    var selected = _repository.Load(prettyId); 
    return Json(
     new { isCalculateTax = selected.calculateTax }, 
     JsonRequestBehavior.AllowGet 
    ); 
} 

Y luego:

success: function(result) { 
    if (result.isCalculateTax) { 
     ... 
    } 
} 

Observación: si la propiedad es booleano selected.calculateTax la denominación .NET convención sería llamarlo IsCalculateTax.

+0

salvó mi día !. Gracias – user1221765

Cuestiones relacionadas