asp.net - route - El elemento del modelo es del tipo CookMeIndexViewModel, pero requiere un elemento de modelo de tipo IEnumerable<CookMeIndexViewModel>
tag helper asp net core 2 (3)
En su opinión, está utilizando @model IEnumerable<CookMe_MVC.ViewModels.CookMeIndexViewModel>
que indica que el modelo esperado por la Vista es del tipo IEnumerable de CookMeIndexViewModel.
Sin embargo, en el controlador está pasando un objeto de tipo CookMeIndexViewModel como una return View(viewModel);
modelo return View(viewModel);
de ahí el error.
Cambie la vista para tener @model CookMe_MVC.ViewModels.CookMeIndexViewModel
o pase un IEnumerable de CookMeIndexViewModel como modelo a la vista en el controlador como se indica a continuación:
public ActionResult Index()
{
var meals= new List<string> { "Dinner 1", "Dinner 2", "3rd not sure" };
//create the view model
var viewModel = new CookMeIndexViewModel
{
NumberOfReceipes = meals.Count(),
ReceipeName = meals
};
List<CookMeIndexViewModel> viewModelList = new List<CookMeIndexViewModel>();
viewModelList.Add(viewModel);
return View(viewModelList);
}
Estoy siguiendo junto con el ejemplo de la tienda de música para intentar aprender ASP.NET MVC. Estoy creando una aplicación de libro de cocina.
He creado mi modelo de vista que se ve así:
namespace CookMe_MVC.ViewModels
{
public class CookMeIndexViewModel
{
public int NumberOfReceipes { get; set; }
public List<string> ReceipeName { get; set; }
}
}
mi controlador se ve así
public ActionResult Index()
{
var meals= new List<string> { "Dinner 1", "Dinner 2", "3rd not sure" };
//create the view model
var viewModel = new CookMeIndexViewModel
{
NumberOfReceipes = meals.Count(),
ReceipeName = meals
};
return View(viewModel);
}
Finalmente mi vista se ve así
@model IEnumerable<CookMe_MVC.ViewModels.CookMeIndexViewModel>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
<th></th>
<th>
Meals
</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
</td>
<td>
@item.ReceipeName
</td>
</tr>
}
</table>
Me sale este error
El elemento de modelo que se pasa al diccionario es del tipo
CookMeIndexViewModel
, pero este diccionario requiere un elemento de modelo de tipoIEnumerable<CookMeIndexViewModel>
.
He seguido el ejemplo. No puedo ver lo que estoy haciendo mal. ¿Debería devolver mi viewmodel como una lista genérica?
Recibí este mensaje cuando tuve un conflicto entre lo que la directiva @model en la vista de diseño de _Layout.cshtml y una vista de "página interior".
El _Layout.cshtml tenía una directiva ...
@model MyProject.Models.MyObject
Mi página interior tenía ...
@model IEnumerable<MyProject.Models.MyObject>
Estaba trabajando en algún código de prueba / experimento y acerté este problema cuando creé un nuevo controlador, etc. Solo cuando cambié el nombre del Objeto modelo y compilé después encontré el origen del problema.
Espero que esto ayude.
Q.
en kendo ui Grid do:
public class BookBean
{
[ScaffoldColumn(false)]
public Int32 Id { set; get; }
public String Title { set; get; }
public String Author { set; get; }
public String Publisher { set; get; }
[UIHint("Integer")]
public Int32 Price { set; get; }
[UIHint("Integer")]
public Int32 Instore { set; get; }
[UIHint("Integer")]
public Int32 GroupId { get; set; }
}
en Integer.ascx en la carpeta Shared / EditorTemplate do:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<int?>" %>
<%: Html.Kendo().IntegerTextBoxFor(m => m)
.HtmlAttributes(new { style = "width:100%" })
.Min(int.MinValue)
.Max(int.MaxValue)
%>