加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 19:28:30 所属栏目:asp.Net 来源:网络整理
导读:我跟着音乐商店的例子来学习ASP.NET MVC。我正在创建一个cookbook应用程序。 我创建了我的viewmodel,看起来像这样: namespace CookMe_MVC.ViewModels{ public class CookMeIndexViewModel { public int NumberOfReceipes { get; set; } public Liststring
我跟着音乐商店的例子来学习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);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读