值无法从kendo网格传递到Entity类?

时间:2015-05-25 10:58:03

标签: javascript c# asp.net kendo-grid kendo-mvvm

这里是我的控制器api类DefComapny的尖锐代码,当从kendo网格发布数据时,其值始终为null,这就是为什么不向数据库输入任何内容?

   [HttpPost]
    public void SaveDefCompny()
    {
   var result = new List<DefCompany>();
        using (var data = new RPDBEntities())
        {
            DefCompanyDTO productViewModel = new DefCompanyDTO();

                var product = new DefCompany
                {
  //same problem of all entites  getting no value from grid

                 Id = productViewModel.Id, // getting no value from grid
                    CurrentCurrencyCode = productViewModel.CurrentCurrencyCode,
                    ShortName= productViewModel.ShortName,
                    FullName= productViewModel.FullName,
                    ContactPerson= productViewModel.ContactPerson,
                    Address1= productViewModel.Address1,
                    CompanyCity= productViewModel.CompanyCity,
                    CompanyState= productViewModel.CompanyState,
                   CompanyCountry= productViewModel.CompanyCountry,
                   ZipPostCode= productViewModel.ZipPostCode,
                   TelArea= productViewModel.TelArea

                };
               result.Add(product);
               data.DefCompanies.Add(product);

             data.SaveChanges();
        }

    }

这是我的viewmodel代码

   document.onreadystatechange = function () {
var viewModel = kendo.observable({

    products: new kendo.data.DataSource({

    schema: {
       //data:"Data",
        total: "Count",

        model: {
            Id: "Id",
            fields: {
                Id: { editable: true, type: "int" },
                ShortName: { editable:true, type: "string" },
                FullName: { editable: true, type: "string" },
                ContactPerson: { editable: true, type: "string" },
                CurrentCurrencyCode: { editable: true, type: "int" },
                Adress1: { editable: true, type: "string" },
                CompanyState: { editable: true, type: "string" },

                CompanyCity: { editable: true, type: "string" },
                CompanyCountry: { editable: true, type: "string" },
                ZipPostCode: { editable: true, type: "string" },
                TelArea: { editable: true, type: "string" }

            }
        }
    },
    batch: true,

    transport: {
        read: {
            url: "/api/Companies/GetAllCompanies",
            dataType: "json"
        },
        create:{

            url: "/api/Companies/SaveDefCompny", 
            dataType: "json"
        },
        update: {
            url: "/api/Companies/SaveDefCompny", // here you need correct api url
            dataType: "json"
        },
        destroy: {
            url: "/api/Companies/Delete", // here you need correct api url
            dataType: "json"
        },
        parameterMap: function (data, operation) {
            if (operation !== "read" && data) {
                 return  kendo.stringify(data) ;


            }
        }
    }

})
});
kendo.bind(document.getElementById("example"), viewModel);


}

我应该如何将内联kendo网格值传递给控制器​​,以便将其保存在数据库中?

1 个答案:

答案 0 :(得分:0)

检查Kendo文档并查看SaveDefCompny应该期望的参数类型。然后,您应该能够使用这些参数读取您需要的任何内容。

url: "/api/Companies/SaveDefCompny", dataType: "json"

这很可能是以json格式向控制器方法发送所需数据。 再说一遍:你的答案在于Kendo文档。

编辑: 请参阅thisthis

从他们的例子:

public ActionResult Products_Create([DataSourceRequest]DataSourceRequest request, ProductViewModel product)
{
    if (ModelState.IsValid)
    {
        using (var northwind = new NorthwindEntities())
        {
            // Create a new Product entity and set its properties from the posted ProductViewModel
            var entity = new Product
            {
                ProductName = product.ProductName,
                UnitsInStock = product.UnitsInStock
            };
            // Add the entity
            northwind.Products.Add(entity);
            // Insert the entity in the database
            northwind.SaveChanges();
            // Get the ProductID generated by the database
            product.ProductID = entity.ProductID;
        }
    }
    // Return the inserted product. The grid needs the generated ProductID. Also return any validation errors.
    return Json(new[] { product }.ToDataSourceResult(request, ModelState));
}