Как мне/можно передать объект json в контроллер webapi (POST) и не иметь класс для его сопоставления, а скорее обрабатывать его как произвольный контент?
Итак, если я перейду от своего клиента так:
createRecord: function (model, data, callback, callbackParams) {
var request = jQuery.ajax({
type: "POST", // default = GET,
url: '/api/' + model + '/',
data: data,
contentType: 'application/json',
success: function (msg) {
$('#results').text(msg);
if (callback) // only fire a callback if it has been specified
callback(msg, callbackParams);
},
error: function (jqXHR, textStatus) {
alert('Request failed: ' + textStatus);
}
});
}
и данные - это что-то вроде:
{ "_id" : ObjectId("5069f825cd4c1d590cddf206"), "firstName" : "John", "lastName" : "Smith", "city" : "Vancouver", "country" : "Canada" }
Мой контроллер сможет его разобрать? И в следующий раз данные могут не соответствовать этой сигнатуре (например:
{ "_id" : ObjectId("5069f825cd4c1d56677xz6"), "company" : "Acme" }
В моем контроллере я попытался:
public HttpResponseMessage Post([FromBody]JObject value)
и
public HttpResponseMessage Post([FromBody]string value)
и (потому что это фактически работает с mongo db):
public HttpResponseMessage Post([FromBody]BsonDocument value)
но похоже, что объект mapper хочет сопоставить что-то, отличное от строки...