I'm building a page in ASP.NET project where I have a model that contains two lists, which fill an initially get in and then direct it to the view where you fill another list, but to get this object, it returns me with all the data in null or the initial data I filled it comes.
ViewModel
public class ChamadoAvaliacaoViewModel
{
public int Id { get; set; }
public string Assunto { get; set; }
[Display(Name = "Descrição")]
public string Descricao { get; set; }
[Display(Name = "Responsavel do Chamado")]
public ApplicationUser ResponsavelChamado { get; set; }
[Display(Name = "Solução")]
public string Solucao { get; set; }
[Display(Name = "Avaliação do Chamado")]
public int AvaliacaoChamado { get; set; }
[Display(Name = "Justificativa da Avaliação")]
public string JustificativaAvaliacao { get; set; }
public List<ChamadoTipoAvaliacao> ChamadoTiposAvaliacao { get; set; }
public List<ChamadoAvaliacao> ChamadoAvaliacao { get; set; }
}
Actions
[Authorize]
public ActionResult AvaliacaoChamado(string id)
{
var chamado = new ChamadoDAO(db).BuscarChamadoId(Convert.ToInt32(id));
if (chamado.StatusChamado.Value)
{
var model = new ChamadoAvaliacaoViewModel();
model.Id = chamado.Id;
model.Descricao = chamado.Descricao;
model.Assunto = chamado.Assunto;
model.Solucao = chamado.Solucao;
model.ResponsavelChamado = chamado.ResponsavelChamado;
model.ChamadoTiposAvaliacao = new ChamadoTipoAvaliacaoGN(db).retornarChamadoTipoAvaliacao();
model.ChamadoAvaliacao = new List<ChamadoAvaliacao>();
foreach (var ChamadoTipoAvaliacao in model.ChamadoTiposAvaliacao)
{
model.ChamadoAvaliacao.Add(new ChamadoAvaliacao());
}
return View(model);
}
else
{
TempData["notice"] = "Chamado não pode ser avaliado, pois ele não foi encerrado.";
return RedirectToAction("Index", "Chamado");
}
}
[HttpPost]
public ActionResult AvaliacaoChamado(string id, ChamadoAvaliacaoViewModel chamadoAvaliacao)
{
var aGN = new ChamadoAvaliacaoGN(db);
var cGN = new ChamadoGN(db);
var chamado = new ChamadoDAO(db).BuscarChamadoId(Convert.ToInt32(id));
foreach (var avaliacao in chamadoAvaliacao.ChamadoAvaliacao)
{
aGN.registrarAvaliacao(avaliacao);
}
cGN.RegistrarUltimaInteracao(Convert.ToInt32(id));
TempData["notice"] = "Chamado Avaliado com Sucesso!";
return RedirectToAction("Index", "Home");
}
Part of View
@for (int i = 0; i < Model.ChamadoTiposAvaliacao.Count; i++)
{
if (Model.ChamadoTiposAvaliacao[i].Id == 1)
{
<div class="form-group">
@Html.Label(Model.ChamadoTiposAvaliacao[i].Titulo, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextAreaFor(model => model.ChamadoAvaliacao[i].Justificativa, htmlAttributes: new { @class = "form-control", Style = "height:130px" })
@Html.HiddenFor(it => Model.ChamadoAvaliacao[i].Justificativa)
@Html.ValidationMessageFor(model => model.ChamadoAvaliacao[i].Justificativa, "", new { @class = "text-danger" })
</div>
</div>
}
else
{
<div class="form-group">
@Html.Label(Model.ChamadoTiposAvaliacao[i].Titulo, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextAreaFor(model => model.ChamadoAvaliacao[i].Nota, htmlAttributes: new { @class = "rating rating-loading AvaliacaoChamado" })
@Html.HiddenFor(it => Model.ChamadoAvaliacao[i].Nota)
@Html.ValidationMessageFor(model => model.ChamadoAvaliacao[i].Nota, "", new { @class = "text-danger" })
</div>
</div>
}
}