Ir ao conteúdo

Posts recomendados

Postado

Olá pessoal!

 

Tenho um select que agora precisa selecionar e salvar mais de uma opção. Sua parte do FrontEnd já está feita, mas o BackEnd não.

 

Preciso desse select para salvar os valores selecionados, para isso vai precisar fazer um loop no código, pois no momento ele salva apenas um valor. Porém não sei como fazer um loop neste código para que ele salve todos os valores e pare de dar erro.

 

Tela com os valores selecionados e seus códigos:

loop.png.ea586eb7564e21cf63cbfa2a22224bee.png

 

 

HTML do Select:

 

<div class="form-group pmd-textfield">
    <label for="TipoPenalAntecedenteCriminal" class="espacamentoLabels">
      Tipo Penal Principal
    </label>
    <select asp-items="Model.ListTipoPenal"
     name="COD_TIPO_PENAL_PRINCIPAL"
     id="TipoPenalAntecedenteCriminal"
     form="formAntecedenteCriminal"
     class="select-codigo" multiple
     onchange="mostrarOutroDeCombo(this, 'OutroTipoPenalAntecedenteCriminal');">
          <option value="">Selecione a relação</option>
     </select>
 </div>

 

 

Codigo da Controller:

Este é o código que preciso fazer um loop para salvar todos os valores.

 

[HttpPost]
        public JsonResult SalvarAntecedenteCriminal(IFormCollection form)
        {
            #region GET DADOS DO USUARIO
            var identity = (ClaimsIdentity)User.Identity;
            string usuarioLogado = identity.Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier).Value;
            #endregion

            _logger.LogInformation(EventosLog.Get, "Usuário: {Usuario} | Salvando Antecedente criminal de autor com o código {codigo}.", usuarioLogado, form["COD_AUTOR"]);

            string codAntecedente = string.IsNullOrEmpty(form["COD_AUTOR_ANTECEDENTES_CRIMINAIS"]) ? "0" : (string)form["COD_AUTOR_ANTECEDENTES_CRIMINAIS"]
                , codUF = string.IsNullOrEmpty(form["COD_UF"]) ? "0" : (string)form["COD_UF"]
                , codTipoPenal = string.IsNullOrEmpty(form["COD_TIPO_PENAL_PRINCIPAL"]) ? "0" : (string)form["COD_TIPO_PENAL_PRINCIPAL"];

            DateTime? ocorrenciaData = string.IsNullOrEmpty(form["OcorrenciaData"]) ? null : (DateTime?)DateTime.Parse(form["OcorrenciaData"]);

            var antecendeteCriminal = new AutorAntecedentesCriminaisModel
            {
                COD_AUTOR = int.Parse(form["COD_AUTOR"]),
                COD_AUTOR_ANTECEDENTES_CRIMINAIS = int.Parse(codAntecedente),
                OcorrenciaNumero = form["OcorrenciaNumero"],
                COD_UF = int.Parse(codUF),
                OcorrenciaData = ocorrenciaData,
                COD_TIPO_PENAL_PRINCIPAL = int.Parse(codTipoPenal),
                OutroTipoPenal = form["OutroTipoPenal"]
            };

            try
            {
                antecendeteCriminal.COD_AUTOR_ANTECEDENTES_CRIMINAIS = antecendeteCriminal.Insert(usuarioLogado);
            }
            catch (Exception excecao)
            {
                _logger.LogError(EventosLog.FormularioSalvarErro, excecao,
                    "Usuário: {Usuario} | Falha ao salvar antecedente criminal de autor com o código {codigo} devido à exceção.",
                    usuarioLogado, form["COD_AUTOR"]);

                if (_env.IsDevelopment())
                    throw;

                return Json(null);
            }

            return Json(antecendeteCriminal);
        }

 

 

Imagem do código, a parte em amarelo e onde ocorre o erro ao salvar.

Em "COD_TIPO_PENAL_PRINCIPAL = int.Parse (codTipoPenal)," está recebendo os valores, mas não está salvando.

 

460755372_fazerumloop.thumb.png.3e082aa7a66b3066780de454d0d30173.png

 

 

desde já agradeço!

Postado

A função int.Parse converte um texto em um numero inteiro.

Então não vai mesmo conseguir converter essa lista de números.

Para converter precisa ser algo como

int[] lista = JsonConvert.DeserializeObject<int[]>("[1,2,3,4,5]");

.Esse código converte o json em uma array de inteiros.

 

Você precisa revisar o tipo de campo e como vai armazenar isso, pois os bancos tradicionais não tem campos do tipo array.

Uma sugestão é tornar o campo numa coluna do tipo texto e armazenar a lista como "1,2,3,4" mesmo. Como é Json é interessante incluir [ e ] que indica que o conteúdo é um array.

Então no código seria simplesmente COD_TIPO_PENAL_PRINCIPAL = "["+codTipoPenal+"]"

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!