在我的视野中使用模型。
我得到了以下例外:
传递到字典中的模型项的类型为'System.Linq.Enumerable + WhereSelectListIterator
2[MyApp.Models.Data.bm_product_categories,<>f__AnonymousType3
1 [System.String]]',但此字典需要类型为'System.Collections.Generic的模型项.IEnumerable`1 [MyApp.Models.Data.bm_product_categories]”。
我正在使用:
我的部分视图( _CategoriesList ):
@model IEnumerable<BluMercados.Models.Data.bm_product_categories>
<h1>Testing</h1>
我的控制器( CategoriesController )和他的方法:
public ActionResult Render()
{
var sluggifiedProjection =
db.bm_product_categories
.ToList()
.Select(category => new
{
CategoryNameSlugged = category.Category_Name.GenerateSlug()
});
return PartialView("_CategoriesList", sluggifiedProjection);
}
如何解决此问题?我真的不知道从控制器到视图的模型是什么。
答案 0 :(得分:2)
问题是由当前创建具有单个属性CategoryNameSlugged的匿名类型实例的选择引起的。您应该确保您的选择操作不会更改可枚举的类型。如果可以设置属性,这可能会有效:
.Select(category =>
{
category.CategoryNameSlugged = category.Category_Name.GenerateSlug();
return category;
});
答案 1 :(得分:2)
您正在传递匿名类型作为模型的一部分。虽然您可以使用dynamic关键字执行此操作,但最好还是制作ViewModel。
像
这样的东西public class CategoryViewModel
{
public WhatEverTypeThisIs NameSlugged { get; set; }
}
然后
public ActionResult Render()
{
var sluggifiedProjection =
db.bm_product_categories
.ToList()
.Select(category => new CategoryViewModel
{
NameSlugged = category.Category_Name.GenerateSlug()
});
return PartialView("_CategoriesList", sluggifiedProjection);
}
,模型将类似于
@model IEnumerable<BluMercados.ViewModels.CategoryViewModel>
取决于你将它放在哪个命名空间