C sharp, MVC ASP.NET Referência de objeto não definida para uma instância de um objeto.
01/04/2016
0
Galera é o seguinte, estou criando um projeto (universitário) em ASP.NET MVC.
Primeiro eu criei uma área de administração onde o administrador pode cadastrar produtos, fazer controle de caixa e funcionários. Porém Estou com um problema!
Agora estou querendo exibir na página inicial os produtos cadastrados na área do Administrador e estou tendo o seguinte erro:
Referência de objeto não definida para uma instância de um objeto.
Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código.
Detalhes da Exceção: System.NullReferenceException: Referência de objeto não definida para uma instância de um objeto.
Erro de Origem:
Linha 28: </tr>
Linha 29:
Linha 30: @foreach (var item in Model)
Linha 31: {
Linha 32: <tr>
Ou seja ele deve pegar os produtos do controlador que está em administrador, o que eu preciso fazer ? Sei que é chato pedir isso mas se possível preciso com certa urgência:
View do Método sem administrador: Lembrando que essa view não tem controlador e está parecida com a do adm onde vou modificar aos poucos para se parecer mais com vista para o usuário.
Controlador do ADM de Produtos:
Primeiro eu criei uma área de administração onde o administrador pode cadastrar produtos, fazer controle de caixa e funcionários. Porém Estou com um problema!
Agora estou querendo exibir na página inicial os produtos cadastrados na área do Administrador e estou tendo o seguinte erro:
Referência de objeto não definida para uma instância de um objeto.
Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código.
Detalhes da Exceção: System.NullReferenceException: Referência de objeto não definida para uma instância de um objeto.
Erro de Origem:
Linha 28: </tr>
Linha 29:
Linha 30: @foreach (var item in Model)
Linha 31: {
Linha 32: <tr>
Ou seja ele deve pegar os produtos do controlador que está em administrador, o que eu preciso fazer ? Sei que é chato pedir isso mas se possível preciso com certa urgência:
View do Método sem administrador: Lembrando que essa view não tem controlador e está parecida com a do adm onde vou modificar aos poucos para se parecer mais com vista para o usuário.
@model IEnumerable<Aplicacao_Apresentacao.Areas.Admin.Models.Produto> @{ ViewBag.Title = "Produtos"; } <h2>Index</h2> <table class="table"> <tr> <th> @Html.DisplayNameFor(model => model.Nome) </th> <th> @Html.DisplayNameFor(model => model.Valor) </th> <th> @Html.DisplayNameFor(model => model.Quantidade) </th> <th> @Html.DisplayNameFor(model => model.Promocao) </th> <th> @Html.DisplayNameFor(model => model.Foto) </th> <th></th> </tr> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.Nome) </td> <td> @Html.DisplayFor(modelItem => item.Valor) </td> <td> @Html.DisplayFor(modelItem => item.Quantidade) </td> <td> @Html.DisplayFor(modelItem => item.Promocao) </td> <td> <img src="@item.Foto" border="0" width="150" /> </td> <td> @Html.ActionLink("Edit", "Edit", new { id = item.Id }) | @Html.ActionLink("Details", "Details", new { id = item.Id }) | @Html.ActionLink("Delete", "Delete", new { id = item.Id }) </td> </tr> } </table>
Controlador do ADM de Produtos:
using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; using System.Linq; using System.Net; using System.Web; using System.Web.Mvc; using Aplicacao_Apresentacao.Areas.Admin.Models; using Aplicacao_Apresentacao.Models; namespace Aplicacao_Apresentacao.Areas.Admin.Controllers { public class ProdutosController : Controller { private BancoASPNETContext db = new BancoASPNETContext(); // GET: Admin/Produtoes public ActionResult Index() { return View(db.Produtoes.ToList()); } // GET: Admin/Produtoes/Details/5 public ActionResult Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Produto produto = db.Produtoes.Find(id); if (produto == null) { return HttpNotFound(); } return View(produto); } // GET: Admin/Produtoes/Create public ActionResult Create() { return View(); } // POST: Admin/Produtoes/Create // To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create(Produto produto, HttpPostedFileBase file) { if (ModelState.IsValid) { db.Produtoes.Add(produto); db.SaveChanges(); if (file != null) { String[] strName = file.FileName.Split('.'); String strExt = strName[strName.Count() - 1]; string pathSave = String.Format(".", Server.MapPath("~/Imagens/"), produto.Id, strExt); String pathBase = String.Format("/Imagens/.", produto.Id, strExt); file.SaveAs(pathSave); produto.Foto = pathBase; db.SaveChanges(); } return RedirectToAction("Index"); } return View(produto); } // GET: Admin/Produtoes/Edit/5 public ActionResult Edit(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Produto produto = db.Produtoes.Find(id); if (produto == null) { return HttpNotFound(); } return View(produto); } // POST: Admin/Produtoes/Edit/5 // To protect from overposting attacks, please enable the specific properties you want to bind to, for // more details see http://go.microsoft.com/fwlink/?LinkId=317598. [HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit(Produto produto, HttpPostedFileBase file) { if (ModelState.IsValid) { db.Entry(produto).State = EntityState.Modified; db.SaveChanges(); if (file != null) { if (produto.Foto != null) { if (System.IO.File.Exists(Server.MapPath("~/" + produto.Foto))) { System.IO.File.Delete(Server.MapPath("~/" + produto.Foto)); } } String[] strName = file.FileName.Split('.'); String strExt = strName[strName.Count() - 1]; string pathSave = String.Format(".", Server.MapPath("~/Imagens/"), produto.Id, strExt); String pathBase = String.Format("/Imagens/.", produto.Id, strExt); file.SaveAs(pathSave); produto.Foto = pathBase; db.SaveChanges(); } return RedirectToAction("Index"); } return View(produto); } // GET: Admin/Produtoes/Delete/5 public ActionResult Delete(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Produto produto = db.Produtoes.Find(id); if (produto == null) { return HttpNotFound(); } return View(produto); } // POST: Admin/Produtoes/Delete/5 [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public ActionResult DeleteConfirmed(int id) { Produto produto = db.Produtoes.Find(id); db.Produtoes.Remove(produto); db.SaveChanges(); return RedirectToAction("Index"); } protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); } base.Dispose(disposing); } } }
José
Curtir tópico
+ 0
Responder
Post mais votado
01/04/2016
Não seria:
@model IEnumerable<Aplicacao_Apresentacao.Areas.Admin.Models.Produtoes>
Jothaz
Responder
Mais Posts
01/04/2016
José
E nem com
@model IEnumerable<Aplicacao_Apresentacao.Areas.Admin.Controllers.ProdutosController>
Responder
Clique aqui para fazer login e interagir na Comunidade :)