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.
@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é

José

Responder

Post mais votado

01/04/2016

Não seria:

@model IEnumerable<Aplicacao_Apresentacao.Areas.Admin.Models.Produtoes>

Jothaz

Jothaz
Responder

Mais Posts

01/04/2016

José

Infelizmente não deu certo amigo...
Responder

01/04/2016

José

E nem com
@model IEnumerable<Aplicacao_Apresentacao.Areas.Admin.Controllers.ProdutosController>
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar