模型在发布后返回null

时间:2016-09-13 11:58:46

标签: c# asp.net-mvc razor asp.net-mvc-5

我在ASP.NET项目中构建一个页面,其中我有一个包含两个列表的模型,这些列表填充了一个最初的get in,然后将其指向您填充另一个列表的视图,但要获取此对象,它返回我的所有数据为null或我填充它的初始数据。

视图模型

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; }
}

操作

    [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");
    }

视图的一部分

@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>
        }

    }

0 个答案:

没有答案