我有一个kendo网格,我显示用户上传的文档列表。在网格中,我有一个名为“Delete”的按钮,它触发dataSource函数“destroy”,它调用delete服务类。为了实现文档的删除,我通过在我的数据源中执行以下操作,将用户选择的documentId传递给服务类的查询:
destroy: {
url: function (options) {
options.IsActive = false;
// type: "POST";
contentType: "application/json; charset=utf8";
return constants.serviceUrl + "Document/Delete?id=" + options.DocumentId;
},
},
dataType: "json",
contentType: "application/json"
},
由于某种原因,与documentId一起添加了与此文档相关的所有数据,这不是我打算做的。这就是fiddler中的URL。
http://localhost/Services/HumanResources/api/Document/Delete?id=2&DocumentId=2&ReviewId=0&DocumentTypeId=2&Name=Applications+to+Install.docx&DocumentData=UEsDBBQABgAIAAAAIQCUZeTvkgEAAK4HAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAe&CreatedById=00000000-0000-0000-0000-000000000000&CreatedDate=0001-01-01T00%3A00%3A00&RawFileName=&DocumentTypeName=Manager
我已经为我的destroy函数设置了断点,并确保documentID只有一个数字。由于这个长URL错误,服务类永远不会被击中。以下是小提琴手的说法:
> HTTP/1.1 414 Request-URI Too Long
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
Date: Wed, 09 Dec 2015 15:00:46 GMT
Connection: close
Content-Length: 329
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Request URL Too Long</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Request URL Too Long</h2>
<hr><p>HTTP Error 414. The request URL is too long.</p>
</BODY></HTML>
知道我的销毁功能是什么,添加了我甚至没有传递给服务URL链接的所有额外数据?
答案 0 :(得分:0)
我认为kendo dataSouce默认是为每个ajax方法添加整个模型。您可以编写自己的参数贴图功能,如下例所示:http://docs.telerik.com/kendo-ui/api/javascript/data/datasource#configuration-transport.destroy
但是你需要检查read / update / create函数是否能获得正确的数据。
因此,添加到dataSource parameterMap,返回销毁请求类型的空对象,并为其他人传递模型属性:
parameterMap: function(data, type) {
if (type === "destroy") {
return { };
}
else {
return { models: kendo.stringify(data.models) };
}
}