отправка объекта json контроллеру jsonresult asp.net mvc - PullRequest
0 голосов
/ 17 декабря 2018

Я отправляю запрос ajax на мой контроллер mvc. Я отправляю объект на объект контроллера mvc, в котором он показывает ноль.

       function add()
        {

         var viftech =
           {
              "id": $("#id").val(),
               "name": $("#name").val(),
               "lastname": $("#lastname").val(),
               "address": $("#address").val()
        };
        var datasent = viftech;
        console.log(datasent);

        $.ajax({
            url: "/VIftech/insertemployee",
            type: "POST",
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify(datasent),
            success: function(data) {
           data ? alert("It worked!",+response.i) : alert("It didn't work.");
           }
          });
    }

Мой контроллер mvc выглядит следующим образом. Примечание. Класс объекта viftech имеет те же параметрыкак идентификатор, имя, фамилия и адрес.если я указываю несколько таких параметров, я получаю значения.

public JsonResult insertemployee(string id,string name,string 
 lastname,string address)

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

public JsonResult insertemployee(Viftech viftech)
    {
        if (string.IsNullOrEmpty(viftech.name))
        {
            return Json("badreques", JsonRequestBehavior.AllowGet);
        }

        return Json(Viftechdb.add(viftech),JsonRequestBehavior.AllowGet);
    }

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Когда данные формы отправлены, механизм связывания модели по умолчанию попытается прочитать данные формы и присвоить значения соответствующим свойствам объекта модели представления.Связыватель модели сможет успешно это сделать, если в вашем классе модели представления есть набор свойств таблицы, которые имеют имя / структуру, совпадающую с данными формы, поступающими.

В коде, которым вы поделились, высоздают не свойство, а поля внутри определения класса Viftech.Следовательно, связыватель модели не может установить значение для этого.

Чтобы устранить проблему, измените все из них на установить свойства таблицы, указав методы доступа к свойствам set и get.

public class Viftech 
{ 
     public int id { set;get; }  
     public string name { set;get; }   
     public string lastname { set;get; }   
     public string address { set;get; }   
}

Боковой узел: Я бы также предложил использовать PascalCasing для имен свойств.

public string Name { set;get; } вместо public string name { set;get; }

0 голосов
/ 17 декабря 2018

Вам нужно назвать параметр в вашем объекте.Для объекта требуется свойство viftech для указания имени параметра, в противном случае он попытается выполнить привязку к идентификатору, имени и фамилии.

  var viftech =
               {viftech:{
                  "id": $("#id").val(),
                   "name": $("#name").val(),
                   "lastname": $("#lastname").val(),
                   "address": $("#address").val()
            }};
            var datasent = viftech;
            console.log(datasent);

            $.ajax({
                url: "/VIftech/insertemployee",
                type: "POST",
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                data: JSON.stringify(datasent),
                success: function(data) {
               data ? alert("It worked!",+response.i) : alert("It didn't work.");
               }
              });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...