Fórum C sharp, MVC ASP.NET Referência de objeto não definida para uma instância de um objeto. #550120
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
Gostei + 1
Mais Posts
01/04/2016
José
Infelizmente não deu certo amigo...
Responder
Gostei + 0
01/04/2016
José
E nem com
@model IEnumerable<Aplicacao_Apresentacao.Areas.Admin.Controllers.ProdutosController>
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)