我跟着音乐商店的例子来学习ASP.NET MVC。我正在创建一个cookbook应用程序。
我创建了我的viewmodel,看起来像这样:
namespace CookMe_MVC.ViewModels { public class CookMeIndexViewModel { public int NumberOfReceipes { get; set; } public List<string> ReceipeName { get; set; } } }
我的控制器看起来像这样
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); }
最后我的看法是这样的
@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>
我得到这个错误。
The model item passed into the dictionary is of type
CookMeIndexViewModel
,but this dictionary requires a model item of typeIEnumerable<CookMeIndexViewModel>
.
我跟着这个例子。我看不到我做错了什么。我应该返回我的viewmodel作为一个通用列表?
解决方法
在您的视图中,您正在使用@model IEnumerable< CookMe_MVC.ViewModels.CookMeIndexViewModel>这表示View所期望的模型是CooknIndexViewModel的类型IEnumerable。
但是在控制器中,你传递一个类型为CookMeIndexViewModel的对象作为模型返回View(viewModel);因此错误。
或者更改视图有@model CookMe_MVC.ViewModels.CookMeIndexViewModel
或者传递一个IEnumerable CookMeIndexViewModel作为模型到控制器中的视图,如下所示:
public ActionResult Index() { var meals= new List<string> { "Dinner 1","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); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。