MVC Razor 传递到字典中的模型项的类型为列表字符串,但此字典需要 IEnumerable
本文关键字:字典 字符串 列表 IEnumerable Razor MVC 模型 类型 | 更新日期: 2023-09-27 18:36:19
Model:
public class TestModel
{
[Column]
public string Name { get; set; }
}
控制器:
TestModel[] metadata = context.GetTable<TestModel>().ToArray();
return View(itemsToShow.ToList());
名称列,并根据用户选择的字母顺序对其进行排序,工作正常(已在调试模式下对其进行了测试 - 例如,如果用户选择"d",则只会显示以"d"开头的项目。
问题是当我在视图中添加"@model IEnumerable"和 foreach 循环时,我收到错误。
问题是您的视图期望模型具有一种IEnumerable<TestModel>
,但您正在传递IList<String>
错误消息所示。
看起来您不应该将metadata
投影到控制器中的IList<String>
并传递到视图,而应该过滤metadata
IEnumerable<TestModel> metadata = context.GetTable<TestModel>().ToArray();
var itemsToShow = string.IsNullOrEmpty (page)
? metadata
: metadata.Where(x => x.Name.StartsWith(page, true, null));
ViewData["currentPage"] = page ?? string.Empty;
return View(itemsToShow.ToList());
为什么你在itemsToShow
上打电话给.ToList()
?(我认为这只是重复)
将List<string> items
更改为IEnumerable<string> items
并从最后一行中删除.ToList()