2010-09-20 4 views
8

j'avais mes actions ASP.NET MVC écrit comme ceci:MVC actions JSON retour 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 
    } 

J'ai eu des problèmes avec cela parce que lors de l'utilisation dans les fonctions jquery J'ai eu toutes sortes d'erreurs, la plupart du temps toLowerCase() fonction défaillante .

donc je devais changer les actions de manière à leur retour bool sous forme de chaîne (appelant ToString() sur les valeurs booléens), de sorte que le retour de Thay true ou false (dans les qoutes) mais je un peu ne l'aime pas.

Comment les autres traitent-ils un tel cas?

Répondre

15

J'utiliser l'objet anonyme (rappelez-vous que JSON est une paires clé/valeur):

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

Et puis:

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

Remarque: si la propriété selected.calculateTax est booléen la dénomination .NET convention serait de l'appeler IsCalculateTax.

+0

sauvé ma journée !. Merci – user1221765