У меня есть Контроллер и Действие для редактирования Персона Таблица.
Я заполняю форму информацией, и если пользователь что-то меняет, я включаю кнопку Сохранить, чтобы вызвать действие.
Персона содержит информацию и изображение профиля.
Проблема в том, Действие вызывается только тогда, когда я просматриваю изображение профиля и отправляю форму как multipart / form-data. Но если я звоню без отправки файла, просто получаю ошибку 500.
Если я хочу отправить его как application / json и связать его с моделью, я должен использовать аннотацию [FromBody] в Действие для параметра PersonModel.
Теперь я отправляю multipart / form-data - и он связывается только при загрузке нового изображения, если я изменяю только поля ввода - я получаю ошибку 500.
[Route("EditPerson")]
[HttpPost]
public IActionResult EditPerson(PersonDto Person) {
//Do something with person model
return Ok();
}
И я использую jQuery-Form-Plugin:
$('#personEditForm').ajaxSubmit({
url: 'PersonSettings/EditPerson',
type: 'post',
contentType: 'multipart/form-data',
success: successEditPerson,
resetForm: true,
beforeSubmit: beforeEditPerson
});
Форма:
<form id="personEditForm" >
<h6><b>General</b></h6>
<hr/>
<fieldset>
<div class="row">
<div class="col-md-4">
<div class="form-group">
<label for="Name">
Person Name :
<span class="danger">*</span>
</label>
<input autocomplete="off" type="text" class="form-control required" id="NameEdit" name="Name">
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label for="Surename">
Person Surename :
<span class="danger">*</span>
</label>
<input autocomplete="off" type="text" class="form-control required" id="SurenameEdit" name="Surename">
</div>
</div
<div class="col-md-4">
<div class="form-group">
<label for="Age">
Person Age :
<span class="danger">*</span>
</label>
<input autocomplete="off" type="text" class="form-control required" id="AgeEdit" name="Age">
</div>
</div
<div class="col-md-4">
<div class="form-group">
<label for="PersonPic">
Profile pic (Must be in size ..x..) :
<span class="danger">*</span>
</label>
<input type="file" class="form-control" id="PersonPic" name="PersonPic" accept="image/*" onchange="loadImageEdit(event)">
</div>
</div>
<div class="col-md-4 ">
<div class="form-group">
<label for="Name">
Profile picture preview:
</label>
<img id="personImagePreviewEdit" alt="Upload image to preview" style="display: block"src="#"/>
</div>
</div>
</div>
</fieldset></form>
Я использую функцию beforeEditPerson для добавления Id для Person.