c# - 视图模型对象引用中的 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 - 如何告诉 gcc 在哪里可以找到 cc1?
- matplotlib - 如何在 x 轴上打印列表的平均值?
- css - 我的网站主体的背景图片在桌面上响应,但在实际手机上不响应
- cordova - 在cordova项目中集成了cordova-plugin-applepay,但付款没有成功,使用了cordova的相同代码
- angular - ng update from 7 to 8 不会更新代码
- unix - Unix 命令 - 用冗长的行递归查找文件
- linux - 使用“git submodule foreach”可以跳过子模块列表吗?
- recursion - 在序言递归中将元素一一添加到新列表中
- html - 我怎样才能使这个 CSS 部分移动友好?
- javascript - Webpack - 找不到模块 raw-loader