我在Durandal项目工作,喜欢使用kendo-ui网格(Telerik公司)。
我也使用创建功能。它说,在网格声明我有以下代码:
transport: {
create: {
url: myUrl,
type: 'POST',
dataType: 'json'
}
},
我的网格是动态它说网格模式和列是在运行时构建的。因此,服务器方法需要通过通用对象接受数据,例如:dataTable。我不能接受特定的类型,比如:产品/学生/汽车。
实现服务器端的正确方法是什么?控制器方法必须接受什么?
我从来没有尝试过,但你应该能够通过一个JSON.net JObject
进出你的控制器,像:
[HttpPost]
public JObject PostAlbumJObject(JObject jobj)
{
// dynamic input from inbound JSON
dynamic data = jobj;
data.someProperty;
return jobj;
}
然而在剑道方面,我不确定DataSource
是否会发送创建请求到服务器,除非有一个指定的id
,使用schema.model.id
var ds = new kendo.data.DataSource({
schema: {
model: {
id: "someIdField"
}
}
});
在内部,Kendo检查设置为ID的字段是否设置为默认值(未定义或0),如果是,则假定对象是新的。当你再次从服务器返回对象时,它必须有ID字段设置为一个值,否则剑道将继续发送项目到服务器认为它仍然是新的(因为它没有ID)。