Usando uma lista dinâmica de caixas de seleção em uma visualização, como criar o modelo

StackOverflow https://stackoverflow.com/questions/2022267

  •  19-09-2019
  •  | 
  •  

Pergunta

Eu tenho um aplicativo asp mvc 2 onde desejo exibir uma lista de caixas de seleção que um usuário pode selecionar, com base em uma lista de registros em um banco de dados.Para exibir a lista, meu modelo contém um objeto List e a visualização possui um foreach e gera Html.CheckBox para cada item da lista.

Existe uma maneira de preencher o modelo com as caixas de seleção selecionadas, visto que o modelo não pode ter propriedades específicas para cada caixa de seleção, pois a lista é dinâmica?Ou eu mesmo tenho que iterar manualmente pelas variáveis ​​dos formulários?

Editar:Detalhes extras conforme comentário de sabanitoPortanto, em um cenário simples de visualização/modelo, se meu modelo tivesse uma propriedade chamada Propriedade1, então minha visualização geraria uma caixa de texto para Propriedade1, quando o formulário for postado por meio de um botão de envio, a estrutura mvc preencherá automaticamente um modelo com Propriedade1 contendo o texto que foi inserido na caixa de texto e passar esse modelo para a ação Controllers.

Como estou lidando com uma lista dinâmica de opções que o usuário pode verificar, não posso escrever propriedades booleanas explícitas em meu modelo e criar explicitamente as caixas de seleção em minha visualização.Dado que minha lista é dinâmica, gostaria de saber se existem maneiras de criar meu modelo e visualizar para que o framework mvc seja capaz de preencher o modelo corretamente quando o formulário for postado.

Foi útil?

Solução

Aqui está o que eu faria:

Você está tendo problemas para gerar as caixas de seleção dinamicamente?

Caso contrário, crie uma propriedade em seu ViewModel que seja:

public List<string> CheckboxResults { get; set; }

Ao gerar suas caixas de seleção na visualização, certifique-se de que todas compartilhem o nome = "CheckboxResults".Quando o MVC vê seu ViewModel como um parâmetro no método de ação, ele automaticamente vincula e coloca todos os resultados "CheckboxResults" na lista (bem como suas outras propriedades do ViewModel).Agora você tem uma lista dinâmica com base nas caixas de seleção que seu usuário marcou e que você pode enviar para seu DomainModel ou qualquer outro lugar.

Coisas muito legais.Deixe-me saber se você estiver tendo problemas para gerar as caixas de seleção dinamicamente, esse é um problema separado da vinculação de modelo a uma lista.

Outras dicas

Use um ViewModel que reflita exatamente sua visão e mapeie seu(s) modelo(s) de domínio para o viewmodel.

A princípio, muitas vezes parece apropriado usar modelos de domínio diretamente na visualização, pelo simples motivo de serem simples de usar.No entanto, à medida que a visão fica mais complexa com o tempo, você acaba colocando uma tonelada de lógica condicional na sua visão e acaba com espaguete.Para aliviar isso, normalmente criamos um ViewModel que se correlaciona 1:1 com a visualização.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top