0

Когда я пытаюсь опубликовать всю сетку кендо, я не получаю объект в контроллере, он идет как null. Я добавил пользовательскую кнопку на панели инструментов, и когда я нажимаю на нее, она должна сделать сообщение назад. В запросе fiddler отображаются данные, отправленные обратно, но я не могу их получить в контроллере?Сетка Кендо, отправляющая данные обратно контроллеру как null

Это захватывается из стельки, запрос HTTP POST

POST http://localhost:59457/api/data/SaveBill HTTP/1.1 Хоста: локальный: 59457 соединения: поддержания активности Content-Length: 24 Accept: приложения/JSON, текст/равнина, / Происхождение: http://localhost:59457 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537,36 (KHTML, как Gecko) Chrome/48.0.2564.116 Safari/537,36 Content-Type: application/json; charset = UTF-Referer: http://localhost:59457/ Accept-Encoding: GZIP, выкачать Accept-Language: EN-US, ан, Q = 0,8

[{ "ID": 1, "Название": "Джон"}]

код на мой контроллер

public IHttpActionResult SaveBillingGroupMap([FromBody]test models) 
     { 
      var x = HttpContext.Current.Request.InputStream; 
      //var employees = this.DeserializeObject<IEnumerable<test>>("models"); 
      throw new NotImplementedException(); 
     } 

    public class test 
     { 
      public int Id { get; set; } 

      public string Name { get; set; } 
} 

код на JS (угловой)

 $scope.mockdata = new kendo.data.ObservableArray([{ 
      "Id": 1, 
       "Name": "John" 
       }, { 
       "Id": 2, 
       "Name": "Joe" 
       }, { 
       "Id": 3, 
       "Name": "Jack" 
       }]); 

        $scope.sportsGrid = new kendo.data.DataSource({ 
        // data: $scope.mockdata, 
        transport: { 
         read: function (e) { 
          e.success($scope.mockdata); 
       }, 
        update: function (e) { 
           console.log("Update", e); 
           }, 
             destroy: function(e) { 
           console.log("Destroy", e); 
         }, 
            create: function(e) { 
         console.log("Create", e); 
        }, 
            parameterMap: function (options, operation) { 
           if (operation !== "read" && options.models) { 
            return { 
             models: kendo.stringify(options.models) 
         }; 
         } 
         } 
         }, 
          batch: false, 
              pageSize: 5, 
          change: function (e) { 
         console.log("change: " +e.action); 
         if (e.action === "remove") { 
                this.sync(); 
             } 
          // do something with e 
         }, 
           schema: { 
              model: { 
            id: "Id", 
            fields: { 
            Id: { 
             type: "number" 
             }, 
             Name: { 
             type: "string" 
             } 

            } 
            } 
             } 
            }); 



    $scope.options = { 
       sortable: true, 
        pageable: true, 
       editable: true, 
       toolbar: ["create", "cancel", { 
        text: "Custom" 
      }], 
       columns: [{ 
       field: "Id", 
        title: "ID" 
     }, { 
      field: "Name", 
      title: "Name" 
     }, { 
        command: ["destroy"], 
         title: " ", 
          width: "150px" 
         }], 
        edit: function(e) { 
      if (e.model.Name == "Joe") { 
       this.closeCell(); 
       } 

     } 

       }; 
    $("#sportsSetupGrid").on("click", ".k-grid-Custom", function (e) { 
     var models = JSON.stringify($("#sportsSetupGrid").data().kendoGrid._data); 


     $http({ 
     method: 'POST', 
     url: 'api/data/SaveBill', 
     data: models, 
     contentType: "application/json", 
      dataType:"JSON" 

    }); 
      e.preventDefault() 
      }); 

это на HTML

 <div kendo-grid k-options="options" k-data-source="sportsGrid" id="sportsSetupGrid" ></div> 

ответ

0

Вы вызываете метод действия SaveBill в яваскрипт и ваше действие имя метода в контроллере SaveBillingGroupMap. Исправьте это, и это будет метод в контроллере

Смежные вопросы