技术背景 - 我们正在使用:
1) 带有 VS2012 的 asp.net 4.5 2) 用于构建单页应用程序 (SPA) 的 Durandal JS。3) Breeze JS 用于查询数据。
现在在我的 jquery ajax 调用中,我正在调用 Breeze Web API 控制器,如下所示:
jsonData.push({
"nodeType": vm.nodeType,
"nodeDescription": vm.nodeDescription,
"NodeDefs": ds.data() // ds dataset is coming from a grid
});
var jsonDataStr = JSON.stringify(jsonData); CONVERT DATA TO JSON
var jq = $.ajax({
url: '/api/breeze/UpdateNode/',
type: "PUT",
dataType: "json",
data:jsonDataStr,
async: false,
});
我的控制器看起来像这样:
[HttpPut]
public SaveResult UpdateNode(JObject saveBundle)
{
SaveResult saved = new SaveResult();
return saved;
}
但是,我从 jQuery FAILED EVENT 得到以下异常返回:
"ExceptionMessage":"没有 MediaTypeFormatter 可用于从媒体类型为 'application/x-www-form-urlencoded' 的内容中读取类型为 'JObject' 的对象。
所以我的主要问题是:如何使用正确的 JSON 数据成功调用我的 Breeze API 控制器?
美国东部时间下午 1:50 更新:如果我在我的 jquery ajax 调用中指定类型:“STRING”或“JSON”,在我的 c# Controller 方法中将我的参数类型定义为 STRING,则调用工作正常。但是,理想情况下,我想将此数据对象作为 JSON 传递,并且我的控制器应该正确处理它。
先谢谢了。
鲍勃