asp.net – 模型项的类型为CookMeIndexViewModel,但需要一个类型为IEnumerable的模型项

前端之家收集整理的这篇文章主要介绍了asp.net – 模型项的类型为CookMeIndexViewModel,但需要一个类型为IEnumerable的模型项前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我跟着音乐商店的例子来学习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 type IEnumerable<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);
}
原文链接:/aspnet/254770.html

猜你在找的asp.Net相关文章