2013-08-01 46 views
0

使用弹出编辑剑道网格。我验证了数据从视图发布(我可以看到它在网络选项卡,在这里看看吧:剑道网格 - 张贴编辑在控制器为空

{"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

您需要添加默认价值,你的id字段,becouse客户端产生价值的新ID,你已经在服务器自动增量产生的值id和射击误差

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

噢等等!尝试更改id到LetterId –

1

我想通了,它需要一个特定的内容类型。传递的类型是一个表单,但控制器需要json。所以运输现在看起来像:

  update: { 
       url: '@Url.Action("JsonEditLetter", "Letter")', 
       dataType: 'json', 
    >>>>>>>> contentType: "application/json", 
       type: "POST" 
      },