2014-11-01 34 views
1

我很難獲取數據到我的控制器使用MVVM方法如this Kendo Dojo example 我可以在我的parameterMap函數中看到數據在options.models中,但是當我在控制器中查找數據,FAC_FuelReceipts爲空。我可以手動給我們一個ajax調用,但是我希望這個功能可以先「開箱即用」。我究竟做錯了什麼?Kendo UI Grid創建數據不會讓它到控制器

網:

$("#grid").kendoGrid({ 
    height: 430, 
    columns: [ 
     { field: "FuelReceiptID" }, 
     { field: "ReceiptDate", title: "Receipt Date", width: 110, format: "{0:MM/dd/yyyy}" }, 
     { field: "FuelType", title: "Fuel Type", width: 110, editor: fuelTypeDropDownEditor }, 
     { field: "Qty", width: 110 }, 
     { field: "ReceivedBy", width: 110 } 

    ], 
    editable: true, 
    pageable: true, 
    sortable: true, 
    filterable: true, 
    navigatable: true, 
    toolbar: ["create", "save", "cancel"], 
    dataSource: viewModel.receipts 
}); 

視圖模型代碼:

var viewModel; 
$(function() { //On Ready 
viewModel = kendo.observable({ 
    receipts: new kendo.data.DataSource({ 

     schema: { 
      model: { 
       id: "FuelReceiptID", 
       fields: { 
        FuelReceiptID: { editable: false, nullable: true }, 
        ReceiptDate: { type: "date", validation: { required: true } }, 
        FuelType: { type: "string", defaultValue:"Diesel" }, 
        Qty: { type: "number", validation: { required: true } }, 
        ReceivedBy: { type: "string" } 
       } 
      } 
     }, 
     batch:true, 
     transport: { 
      read: { 
       cache:false, 
       url: "/Fuels/GetFuelReceipts", 
       dataType: "json" 

      }, 
      create: { 
       url: "/Fuels/Create", 
       dataType: "json", 
       type: "POST" 
      }, 

      parameterMap:function(options,operation){ 

       if (operation == "read") { 
        return{ 

         SiteID: SiteID, 
         ReceiptMonth: ReceiptMonth, 
         ReceiptYear: ReceiptYear 
        } 
       } 

       if (operation !== "read" && options.models) { 
        return { FAC_FuelReceipts: kendo.stringify(options.models) }; 
        } 
      } //parameterMap fuction 
     } //transport 
    }) 
}); 

控制器代碼:

[HttpPost] 
    public JsonResult Create(IEnumerable<FAC_FuelReceipts> FAC_FuelReceipts) //**empty here** 
    { 
     //Do something with data here 
     return Json(FAC_FuelReceipts, JsonRequestBehavior.AllowGet); 
    } 

回答

1

用String instea d IEnumerable,因爲您的參數數據是字符串格式。 一旦以串格式獲取數據反序列化到您的對象中

[HttpPost] 
public JsonResult Create(string FAC_FuelReceipts) 
     { 

      IList<FAC_FuelReceipts> Items= new JavaScriptSerializer().Deserialize<IList<FAC_FuelReceipts>>(FAC_FuelReceipts); 

      /**your code*/ 

      return Json(FAC_FuelReceipts); 
     }