Как отправить объект json в метод Controller JsonResult - PullRequest
1 голос
/ 13 марта 2019

Мне нужно передать объект JSON, который может иметь много элементов, я попробовал его с помощью следующего кода:

var app = new Vue({
   el: '#crearMetaCompuesta',
   data: {
      inputmin: 0,
      inputmax: 0,
      inputres: 0,
      rangos_creados: [{
         min: 1,
         max: 2,
         result: 3
      }]
   },
   methods: {
      additem: function() {

         let nuevoItem = {
            min: this.inputmin,
            max: this.inputmax,
            result: this.inputres,

         }

         this.rangos_creados.push(nuevoItem);
      },
      guardarMetaCompuesta: function() {

         console.log(JSON.stringify(this.rangos_creados));

         axios.post('@Url.Action("GuardarMetaCompuesta")', {
               msg: JSON.stringify(app.rangos_creados),
               id: 7
            }, {
               headers: {
                  'contentType': 'application/json; charset=utf-8'
               }
            }).then(function(response) {
               alert(response);
               console.log("--------->" + JSON.stringify(app.rangos_creados));
            })
            .catch(function(e) {
               console.log("---------> |" + e);
            });
      }
   }
})

Метод JSONResult:

public class MetasCompuestasClass{
    public string min { get; set; }
    public string max { get; set; }
    public string result { get; set; }
}


public JsonResult GuardarMetaCompuesta(MetasCompuestasClass msg, int id) {
  //here I put a breakpoint but the variable arrives null
    var x = 1;
    return Json(new { result = false, message = msg }, JsonRequestBehavior.AllowGet);
}

, но msg переменная всегда прибывает в нуль.

Как мне отправить объект или какие «заголовки» я должен поместить, чтобы переменная не пришла в ноль, и я мог сохранить элементы типа MetasCompuestasClass?

Ответы [ 2 ]

2 голосов
/ 13 марта 2019

Похоже, ваш rangos_creados объект является массивом, и вы ожидаете одного объекта в вашем действии.

Попробуйте с подписью Action, как это:

public JsonResult GuardarMetaCompuesta(List<MetasCompuestasClass> msg, int id) {

Или, если вы не хотели создавать этот массив, потому что вы всегда передаете только один элемент в действие API, измените объявление rangos_creados на объект и сопоставьте ему свойства nuevoItem, или просто обновите rangos_creados значениями вместо использования nuevoItem и больше не помещайте его в коллекцию. Но это зависит от того, что вы пытаетесь сделать.

0 голосов
/ 13 марта 2019

Похоже, вы отправляете приложение. вместо этого.

JSON.stringify(app.rangos_creados) против JSON.stringify(this.rangos_creados)

Имейте в виду, что this может быть другим контекстом в этом сценарии.

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