2013-08-01 3 views
0

Использование сетки kendo с редактированием всплывающих окон. Я проверил данные размещены с точки зрения (я могу увидеть его в закладке Network, вот посмотрите на него:Kendo grid - Добавлено Редактировать null на контроллере

{"LetterId":12,"BodyText":"This is a test","CreatedDate":"07/31/2013","CreatedBy":"Grace Rodgers","ModifiedDate":"07/31/2013","ModifiedBy":"Grace Rodgers","PersonId":18,"FirstName":"Jason","LastName":"Bigby"}: 

Однако, у меня есть точки останова в методе JSon в контроллере, и при наведении курсора мыши по параметру модели в показах все поля нулевой Вот первые пару строк кода контроллера:.

[HttpPost] 
    public JsonResult JsonEditLetter(LetterViewModel model) 
    { 

и код кендо в представлении:

var PersId = $("#PersonId").val(); 

    var ds_LettersGrid = new kendo.data.DataSource({ 
     transport: { 
      read: { 
       url: '@Url.Action("JsonGetLetterList", "Letter")/' + PersId, 
       dataType: 'json' 
      }, 
      update: { 
       url: '@Url.Action("JsonEditLetter", "Letter")', 
       dataType: 'json', 
       type: "POST" 
      }, 
      parameterMap: function (data, type) { 
       if (type == "update") { 

        data.models[0].CreatedDate = kendo.toString(new Date(data.models[0].CreatedDate), "MM/dd/yyyy"); 
        data.models[0].ModifiedDate = kendo.toString(new Date(data.models[0].ModifiedDate), "MM/dd/yyyy"); 

       return kendo.stringify(data.models[0]); 
       } 
      }, 

     }, 
     batch: true, 
     schema: { 
      model: { 
       id: "LetterId", 
       fields: { 
        BodyText: { editable: true }, 
        CreatedDate: { editable: false, type: "date"}, 
        ModifiedDate: { editable: false, type: "date" }, 
        CreatedBy: { editable: false}, 
        ModifiedBy: { editable: false }, 
        PersonId: { defaultValue: PersId } 
       } 
      } 
     }, 
     pageSize: 10 
    }); 

    $(document).ready(function() { 

     $("#letter-list").kendoGrid({ 
      dataSource: ds_LettersGrid, 
      sortable: true, 
      filterable: { extra: false, operators: { 
       string: { startswith: "Starts with", eq: "Is equal to" } 
      } 
      }, 
      pageable: true, 
      columns: [{ 
       field: "BodyText", title: "Letter Content", width: 400, filterable: false 
      }, { 
       field: "CreatedBy", title: "Author", filterable: false 
      }, { 
       field: "CreatedDate", title: "Original Date", format: "{0:g}", filterable: { ui: "datetimepicker" } 
      }, { 
       field: "ModifiedBy", title: "Edited By", filterable: false 
      }, { 
       field: "ModifiedDate", title: "Editted On", format: "{0:g}", filterable: { ui: "datetimepicker" } 
      }, { 
       command: [ "edit" ], title: "", width: "110px" 
      }], 
      height: "300px", 
      resizable: true, 
      editable: "popup" 
     }); 
    }); 

ответ

2

Вы должны добавить по умолчанию значение для вашего идентификатора поля becouse на стороне клиента генерирует новое значение идентификатора, что уже есть в сервере Autoincrement сгенерированного значение и его ошибку съемки

schema: { 
      model: { 
       id: "LetterId", 
       fields: { 
        LetterId: {defaultValue: 16000} 
        BodyText: { editable: true }, 
        CreatedDate: { editable: false, type: "date"}, 
        ModifiedDate: { editable: false, type: "date" }, 
        CreatedBy: { editable: false}, 
        ModifiedBy: { editable: false }, 
        PersonId: { defaultValue: PersId } 
       } 
      } 
     } 
+0

Спасибо, но это не имело значения. – BattlFrog

+0

Он должен работать, снова проверить –

+0

Ой, подождите! Попробуйте изменить идентификатор на LetterId –

1

Я понял это, он хотел определенный типа контента. Передаваемый тип был формой, но контроллер хотел json. Таким образом, Транспорт теперь выглядит так:

  update: { 
       url: '@Url.Action("JsonEditLetter", "Letter")', 
       dataType: 'json', 
    >>>>>>>> contentType: "application/json", 
       type: "POST" 
      }, 
Смежные вопросы