none
The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[Restaurant.Models.Menu]', but this dictionary requires a model item of type 'Restaurant.Models.Menu'. RRS feed

  • Pregunta

  • Hola.

    Soy nueva en MVC.

    Me aparece este error  y no consigo resolverlo les agradeceria su ayuda, mi codigo es el siguiente.

    Nota: Trato de mostrar una listado del menu

    Model.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;

    namespace Restaurant.Models
    {
        public class Menu
        {
       
           public int Id { get; set; }
           public string Categoria { get; set; }
           public string Name { get; set; }  
           public string Description { get; set; }
           public int Precio { get; set; }

        }
    }

    MenuController

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using Restaurant.Models;

    namespace Restaurant.Controllers
    {
        public class MenuController : Controller
        {
            // GET: Menu
            public ActionResult Index()
            {
                List<Menu> menu = new List<Menu>();
                menu.Add(new Menu { Id = 1, Categoria = "Desayuno", Name = "omelet", Description = "Jamon,Queso,Papas",      Precio = 10 });
                menu.Add(new Menu { Id = 2, Categoria = "Bebidas", Name = "Cafe", Description = "Crema o canela", Precio = 6 });
                menu.Add(new Menu { Id = 3, Categoria = "Postres", Name = "Flan Napolitano", Description = "Vainilla,Nuez,Cafe", Precio = 15 });
                menu.Add(new Menu { Id = 4, Categoria = "Comida", Name = "Flautas", Description = "Queso,Papa,Chorizo", Precio = 25 });
                menu.Add(new Menu { Id = 5, Categoria = "Ensaladas", Name = "Romana", Description = "Zanahoria,Lechuga,berros,vinagre", Precio = 34 });

                return View(menu);
        }
    }
    }

    Vista Index

    @model  Restaurant.Models.Menu
    @{
        ViewBag.Title = "Index";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }

    <h2>Menu</h2>
    <table>
        <thead>
            <tr>menu de hoy</tr>
        </thead>
        <tbody>
            <tr>
                <td>Categoria</td>
                <td>@Model.Categoria</td>
            </tr>

            <tr>
                <td>Name</td>
                <td>@Model.Name</td>
            </tr>

            <tr>
                <td>Desciption</td>
                <td>@Model.Description</td>
            </tr>

            <tr>
                <td>Precio</td>
                <td>@Model.Precio</td>
            </tr>
           

        </tbody>
    </table>

    miércoles, 17 de enero de 2018 3:15

Respuestas

  • Hola en la vista podrías intentar cambiando

    @model  Restaurant.Models.Menu


    por 

    @model  IEnumerable <Restaurant.Models.Menu>

    y luego tendrias que hacer algo como

    <table class="table">
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.Categoria)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Name)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Description)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Precio)
            </th>
            <th></th>
        </tr>
    
    @foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Categoria)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Name)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Description)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Precio)
            </td>
    
        </tr>
    }
    
    </table>


    Votar es agradecer.
    Saludos.
    Lima-Perú


    • Editado Augusto1982 miércoles, 17 de enero de 2018 4:05
    • Marcado como respuesta MeredithSouza miércoles, 17 de enero de 2018 15:15
    miércoles, 17 de enero de 2018 3:50