首页 > 解决方案 > 视图模型对象引用中的 foreach 未设置为对象的实例

问题描述

嗨,我遇到了一个可怕的问题控制器正常调用,foreach 循环工作正常,使用 List 返回调用视图,@foreach 启动循环并加载从数据库带来的寄存器,但在最后一次交互中它中断了.

我尝试处理 viewdata、viewbag、IEnumerable、List、IList 的所有可能性,但什么都没有。有人有任何精神和光荣的解决方案吗?非常感谢。变量名称是葡萄牙语,但我将主要名称(如 dbcontext)保留在 ingles 或标准首字母中。

应用程序“/”中的服务器错误。你调用的对象是空的。在此处输入图像描述 异常详细信息:System.NullReferenceException:未为对象实例定义对象引用。

----> Controller
List<Carrinho_Compras> lstCarrinho = new List<Carrinho_Compras>();
                string idUsuario = Session["ID_Usuario"].ToString();
                var itensCarrinho = db.CarrinhoCompras.Where(x => x.ID_Usuario == idUsuario).ToList();

                if (idUsuario == null)
                {
                    return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                }

                if (itensCarrinho == null)
                {
                    return HttpNotFound();
                }

                if (itensCarrinho != null)
                {
                    ViewData["Qtd_Itens"] = itensCarrinho.Count;
                    decimal precoProduto = 0;
                    decimal total = 0;
                    foreach (var item in itensCarrinho)
                    {
                        Carrinho_Compras entCarrinho = new Carrinho_Compras();
                        entCarrinho.ID_Carrinho_Compras = item.ID_Carrinho_Compras;
                        entCarrinho.ID_Cadastro_Prod_Loja = item.ID_Cadastro_Prod_Loja;
                        entCarrinho.ID_Usuario = idUsuario;
                        entCarrinho.Nome_Produto = item.Nome_Produto;
                        entCarrinho.Modelo_Produto = item.Modelo_Produto;
                        entCarrinho.Preco_Produto = item.Preco_Produto;
                        entCarrinho.Quantidade_Produto = item.Quantidade_Produto;
                        entCarrinho.Descricao_Produto = item.Descricao_Produto;
                        entCarrinho.Caminho_Arquivo = item.Caminho_Arquivo;
                        precoProduto = item.Preco_Produto;
                        total = total + precoProduto;
                        entCarrinho.Total = total;

                        lstCarrinho.Add(entCarrinho);
                    }

                    ViewData["Total"] = total;
                    ViewData["CarrinhoCompras"] = lstCarrinho;
                    this.page.Session.Add("Total", total);

                    return View(lstCarrinho);

---> View
@model List<VitrineVirtual.Model.Carrinho_Compras>
<table class="table shoping-cart-table">
                        <tbody>
                            @{
                                var lstCarrinho = ViewData["CarrinhoCompras"] as List<VitrineVirtual.Model.Carrinho_Compras>;
                                var last = Model.Last();
                                foreach (var item in Model.Where(item => item != null))
                                {
                                    if (item.Equals(last))
                                    {
                                        break;
                                    }
                                    else
                                    {
                                        <tr>
                                            <td width="120">
                                                <div class="cart-product-imitation">
                                                    <a href="#" title="Foto">
                                                        <img style="position:initial" width="90" height="90" src="@Url.Content(item.Caminho_Arquivo)" />
                                                    </a>
                                                </div>
                                            </td>
                                            <td class="desc">
                                                <h3>
                                                    <a href="#" class="text-navy">
                                                        @*<input type="text" id="nomeProduto" name="preco" class="form-control" value="@item.Nome_Produto">*@
                                                        @Html.DisplayFor(modelItem => item.Nome_Produto)
                                                    </a>
                                                </h3>
                                                <h4>
                                                    <a href="#" class="text-navy">
                                                        @*<input type="text" id="modeloProduto" name="preco" class="form-control" value="@item.Modelo_Produto">*@
                                                        @Html.DisplayFor(modelItem => item.Modelo_Produto)
                                                    </a>
                                                </h4>
                                                <p class="small">
                                                    @*<input type="text" id="descricaoProduto" name="preco" class="form-control" value="@item.Descricao_Produto">*@
                                                    @Html.DisplayFor(modelItem => item.Descricao_Produto)
                                                </p>
                                                <h3 class="small">
                                                    @*<input type="text" id="precoProduto" class="form-control" value="@item.Preco_Produto">*@
                                                    @Html.DisplayFor(modelItem => item.Preco_Produto))
                                                </h3>
                                            </td>
                                            <td>
                                                <div class="row">
                                                    <div class="col-sm-3 pull-left">
                                                        <input type="text" id="txtAtualizaPreco" name="preco" class="form-control">
                                                        <input type="hidden" name="preco" id="hdnAtualizaPreco" value="@item.Preco_Produto" />
                                                        @*@Html.TextBoxQtd(Request.Form["QtdProduto"], new { value = item.Preco_Produto }, new { @id = "QtdProduto", @class = "form-control", @type = "number", @text = "1" })*@
                                                    </div>
                                                    <div class="col-sm-4">
                                                        <input type="button" id="btnAtualizaPreco" value="Calcular" class="form-control text-white" style="background-color: #3872a2">
                                                        @*@Html.ActionLink("Atualiza Valor", "AtualizaPreco", "CarrinhoCompras", new { quantidade = Request.Form["QtdProduto"] }, new { @class = "btn btn-info" })*@
                                                    </div>
                                                </div>
                                            </td>
                                            <td width="40">
                                                <div class="m-t-sm">
                                                    <button id="btnExcuiItemcarrinho" class="btn-danger btn btn-xs apaga" value="Excuir"><i class="fa fa-trash"></i></button>
                                                    <input type="hidden" name="itemCarrinho" id="hdnExcluiItemCarrinho" value="@item.ID_Carrinho_Compras" />
                                                </div>
                                            </td>
                                        </tr>
                                    }
                                }

                            }

                        </tbody>
                    </table>

标签: c#asp.net-mvc

解决方案


推荐阅读