You need to get Group and Group Items data when the user posts.
I do not know if it's the best, but an alternative (which I've used several times) for this is you can create a Model (like GroupViewModel for example) that will have list / arrays properties to receive the Ids of each list of items that the user has selected for the Group, in addition to Group data (with Id, Name, etc.). .) and the name of the items, etc.
Example Model :
public class GrupoViewModel
{
private IRepositorioItem _repositorioItem;
public GrupoViewModel(IRepositorioItem repositorioItem)
{
_repositorioItem = repositorioItem;
}
public GrupoViewModel():this()
{
PreencherListaDeGrupoItemA();
PreencherListaDeGrupoItemB();
PreencherListaDeGrupoItemC();
}
//Dados do Grupo
public int ID { get; set; }
public string Nome { get; set; }
//Outros campos do seu model.....
//Lista de Itens
public int[] IdsGrupoItemA { get; set; }
public int[] IdsGrupoItemB { get; set; }
public int[] IdsGrupoItemC { get; set; }
private void PreencherListaDeGrupoItemA()
{
//Código para buscar e preencher os itens IdsGrupoItemA
foreach(var item in _repositorioItem.ObterTodosGrupoItemA())
{
//Preenche os dados desejados como IdsGrupoItemA do item, etc...
}
}
private void PreencherListaDeGrupoItemB()
{
//Código para buscar e preencher os itens IdsGrupoItemB
foreach(var item in _repositorioItem.ObterTodosGrupoItemB())
{
//Preenche os dados desejados como IdsGrupoItemB do item, etc...
}
}
private void PreencherListaDeGrupoItemC()
{
//Código para buscar e preencher os itens IdsGrupoItemC
foreach(var item in _repositorioItem.ObterTodosGrupoItemC())
{
//Preenche os dados desejados como IdsGrupoItemC do item, etc...
}
}
}
In Controller , Action , you create an instance of GrupoViewModel by filling in the information to be displayed (Group data and item lists).
To mount your View (of type GroupViewModel ) use the item ids, which will already be filled in, using checkbox (which I usually use) with the same name as the properties for the user to select the desired items.
In Controller , in your Action Post , you receive the Ids of items selected by the user to each Id you retrieve the object (be it GroupItemA, GroupItemB and / or GroupItemC) and associates / adds in the item list of your Group.
Example Controller :
public class GrupoController
{
public ActionResult Create()
{
return View(new GrupoViewModel());
}
[HttpPost]
public ActionResult Create(GrupoViewModel grupoViewModel)
{
...
List<GrupoItemA> listaItensAselecionados = new List<GrupoItemA>();
foreach(var idGrupoItemA in grupoViewModel.IdsGrupoItemA)
{
//Recupero o objeto GrupoItemA desse Id e adiciono na lista listaItensAselecionados
}
List<GrupoItemB> listaItensBselecionados = new List<GrupoItemB>();
foreach(var idGrupoItemB in grupoViewModel.IdsGrupoItemB)
{
//Recupero o objeto GrupoItemB desse Id e adiciono na lista listaItensBselecionados
}
List<GrupoItemC> listaItensCselecionados = new List<GrupoItemC>();
foreach(var idGrupoItemC in grupoViewModel.IdsGrupoItemC)
{
//Recupero o objeto GrupoItemC desse Id e adiciono na lista listaItensCselecionados
}
...
//Agora com os itens selecionados recuperados você cria o Grupo novo
}
}