Действия MVC JSON, возвращающие bool - PullRequest
8 голосов
/ 20 сентября 2010

Мои действия ASP.NET MVC были написаны так:

    //
    // 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
    }

У меня были проблемы с этим, потому что при использовании его в функциях jquery у меня возникали всевозможные ошибки, в основном toLowerCase() сбой функции.

Поэтому мне пришлось изменить действия таким образом, чтобы они возвращали bool в виде строки (вызывая ToString() для значений bool), чтобы они возвращали true или false (в qoutes), но явроде не нравится.

Как другие справляются с таким делом?

1 Ответ

16 голосов
/ 20 сентября 2010

Я бы использовал анонимный объект (помните, что JSON - это пары ключ / значение):

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

А затем:

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

Примечание: если свойство selected.calculateTax имеет значениелогическое. Соглашение об именах .NET будет называть его IsCalculateTax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...