I had my ASP.NET MVC actions written like this:
//
// 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
}
I had problems with this because when using it in jquery functions I had all sorts of error, mostly toLowerCase()
function failing.
So I had to change the actions in a way that they return bool as string (calling ToString()
on bool values), so that thay return true
or false
(in the qoutes) but I kinda don't like it.
How do others handle such a case?
JsonResult is an ActionResult type in MVC. It helps to send the content in JavaScript Object Notation (JSON) format.
An action result is what a controller action returns in response to a browser request. The ASP.NET MVC framework supports several types of action results including: ViewResult - Represents HTML and markup. EmptyResult - Represents no result. RedirectResult - Represents a redirection to a new URL.
For sending back the result in JSON format in any MVC application, you have to implement the “JSONRESULT” class in your application.
I would use anonymous object (remember that JSON is a key/value pairs):
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
);
}
And then:
success: function(result) {
if (result.isCalculateTax) {
...
}
}
Remark: if the selected.calculateTax
property is boolean the .NET naming convention would be to call it IsCalculateTax
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With