Мне нужно сделать Ajax-запрос с 3 параметрами (модель, целое число и перечисление), но я получаю значение NULL для свойств модели, значение 0 для целочисленного параметра и Enum. Любопытно, что если я просто передам Model (personContactViewModel) в одиночку и преобразую его в блок запроса AJAX (data: JSON.stringify (personContactViewModel)), это сработает. Проблема в том, что передаются 3 параметра, ни один из них не работает. Кто-нибудь знает, как мне помочь? Обнимаю всех!
[HttpPost]
[Route("pessoa-gerenciar/changeFormaContato")]
public IActionResult ChangeFormaContato([FromBody] PessoaContatoViewModel pessoaContatoViewModel, int formaContatoIdChange, PessoaNatureza pessoaNatureza)
{
//ViewBag.indice_new = indice;
//return PartialView("~/Views/Pessoa/PessoaContato/_PessoaContatoAdd.cshtml", _pessoaContatoAppService.CreateNew(pessoaNatureza, formaContatoId));
return null;
}
public class PessoaContatoViewModel
{
[Key]
public int Id { get; set; }
public int PessoaId { get; set; }
[DisplayName("Forma de Contato")]
[Required(ErrorMessage = "Escolha a Forma de Contato")]
[JsonConverter(typeof(StringEnumConverter))]
public int FormaContatoId { get; set; }
[DisplayName("Forma de Contato")]
[Required(ErrorMessage = "Selecione uma Forma de Contato")]
public int FormaContatoTipoId { get; set; }
[DisplayName("Contato")]
[Required(ErrorMessage = "O campo Contato é obrigatório")]
[MaxLength(100, ErrorMessage = "O campo {0} deve ter no máximo {1} caracteres")]
public string Contato { get; set; }
[DisplayName("Observação")]
[MaxLength(150, ErrorMessage = "O campo {0} deve ter no máximo {1} caracteres")]
public string Observacao { get; set; }
[DisplayName("Principal")]
public bool ContatoPrincipal { get; set; }
}
JavaScript:
var pessoaNatureza = $('#pessoaNatureza').val();
var formaContatoIdChange = $(this).closest('.row').find('.sel-forma-contato').val(); //Forma de contato selecionada depois de alterar
var formaContatoAtual = $(this).closest('.row').find('.sel-contato-tipo').val() != '' ? $(this).closest('.row').find('.sel-contato-tipo').val() : '0';
var idAtual = $(this).closest('.row').find('.hid-id').val() != '' ? $(this).closest('.row').find('.hid-id').val() : '0';
var pessoaIdAtual = $(this).closest('.row').find('.hid-pessoaId').val() != '' ? $(this).closest('.row').find('.hid-pessoaId').val() : '0';
var contatoAtual = $(this).closest('.row').find('.txt-contato').val();
var observacaoAtual = $(this).closest('.row').find('.txt-observacao').val();
var contatoPrincipalAtual = $(this).closest('.row').find('.ckb-contato-principal').is(":checked");
var pessoaContatoViewModel = {
Id: parseInt(idAtual),
PessoaId: parseInt(pessoaIdAtual),
FormaContatoId: parseInt(formaContatoIdPrevious),
FormaContatoTipoId: parseInt(formaContatoAtual),
Contato: contatoAtual,
Observacao: observacaoAtual,
ContatoPrincipal: contatoPrincipalAtual
};
$.ajax({
url: "/pessoa-gerenciar/changeFormaContato",
type: "POST",
data: {pessoaContatoViewModel: JSON.stringify(pessoaContatoViewModel), formaContatoIdChange: formaContatoIdChange, pessoaNatureza: pessoaNatureza},
contentType: "application/json",
dataType: "json",
success: function (result) {
formaContatoIdPrevious = "0";
},
error: function () {
formaContatoIdPrevious = "0";
alert("Oops! Algo deu errado.");
}
});