Как я могу вернуть данные JSON из MVC?

#asp.net-mvc #json

#asp.net-mvc #json

Вопрос:

В настоящее время я возвращаю данные JSON следующим образом:

 return new JsonResult {
Data = from service in _serviceTable.GetAll(
 u => u.PartitionKey == "1Z0-851" amp; 
 u.RowKey.CompareTo(lowerBound) >= 0 amp; 
 u.RowKey.CompareTo(upperBound) < 0)
       select new { 
 service.PartitionKey, 
 service.RowKey,
 service.TopicDescription,
 service.SubTopicDescription,
 service.Weight,
 service.Format,
 service.Style,
 service.ShortTitle }
};
  

Это работает хорошо, но теперь я хотел бы вернуть некоторые данные, чтобы указать статус. Я попытался добавить это как, status таким образом:

  ShortTitle },
 Status = "abc"
    };
  

но я получаю сообщение о синтаксической ошибке, в котором говорится «не содержит определения для статуса

Надеюсь, кто-нибудь может объяснить, как я мог бы добавить статус и отправить его обратно на мою веб-страницу. Обратите внимание, что в serviceTable много строк, но только один статус для отправки обратно.

Ответ №1:

Вы могли бы сделать это и немного навести порядок, используя пару промежуточных переменных ( var удобно обрабатывает анонимные типы):

 var service = from service in _serviceTable.GetAll(
                u => u.PartitionKey == "1Z0-851" amp; 
                u.RowKey.CompareTo(lowerBound) >= 0 amp; 
                u.RowKey.CompareTo(upperBound) < 0)
              select new { 
                service.PartitionKey, 
                service.RowKey,
                service.TopicDescription,
                service.SubTopicDescription,
                service.Weight,
                service.Format,
                service.Style,
                service.ShortTitle });

var status = "abc";

var result = new {
  Service = service,
  Status = status
};

return Json(result);
  

Ответ №2:

 return new JsonResult {
Data = new {Result=(from service in _serviceTable.GetAll(
 u => u.PartitionKey == "1Z0-851" amp; 
 u.RowKey.CompareTo(lowerBound) >= 0 amp; 
 u.RowKey.CompareTo(upperBound) < 0)
       select new { 
 service.PartitionKey, 
 service.RowKey,
 service.TopicDescription,
 service.SubTopicDescription,
 service.Weight,
 service.Format,
 service.Style,
 service.ShortTitle}), Status="abc"}


};
  

Пожалуйста, проверьте синтаксис, но вы поняли идею.
Для доступа к данным вам придется использовать что-то вроде data.Результат и данные.Статус для статуса.