Я ищу, чтобы отправить formdata в C# web api и работать с привязкой к модели. Похоже, это должно быть возможно, но мой объект никогда не заселен. Я хочу, чтобы код был простым и гибким. то есть. Я не хочу добавлять новый json-атрибут к моему вызову ajax каждый раз, когда добавляю новое поле формы, и я хотел бы передавать файлы, если захочу (не ожидая привязки файлов к модели).post formdata через ajax to webapi
Вот в основном то, что у меня есть на данный момент.
$('.save').click(function() {
$.ajax({
url: 'api/plant/insert',
data: new FormData($('form')[0]),
type: 'POST',
processData: false,
contentType: 'application/x-www-form-urlencoded',
beforeSend: function() {
$.processing({ content: 'Saving Plant' });
},
error: function() {
$.error({ content: 'An error occurred saving the plant' });
},
success: function (data) {
location.assign('PlantEdit.cshtml?plant_id=' + data);
}
});
});
и в моем контроллере
public int Insert([FromBody] Plant plant)
{
return plant.Insert();
}
и моей модели
public class Plant : Data
{
public int plant_id { get; set; }
public bool live { get; set; }
public string genus { get; set; }
public string species { get; set; }
public string variety_name { get; set; }
public Plant() { }
}
и образец разместить данные
------WebKitFormBoundaryc6x6E9JewE0ln4ql
Content-Disposition: form-data; name="live"
on
------WebKitFormBoundaryc6x6E9JewE0ln4ql
Content-Disposition: form-data; name="genus"
test genus name
------WebKitFormBoundaryc6x6E9JewE0ln4ql
Content-Disposition: form-data; name="species"
test species name
------WebKitFormBoundaryc6x6E9JewE0ln4ql
Content-Disposition: form-data; name="variety_name"
test variety name
------WebKitFormBoundaryc6x6E9JewE0ln4ql--
В результате экземпляр растение не равно нулю, но все атрибуты равны нулю, следовательно пустую строку, вставленную в базу данных. Так что я слишком много прошу, или я все об этом ошибаюсь?
Было бы полезно знать, что ваш объект Завод выглядит. Кроме того, если вы посмотрите в инструментах разработчика в своем браузере, что это сообщение на сервер? – peinearydevelopment
не беспокоиться, у меня включена дополнительная информация – crazyhor77