好的,有很多这样的问题,我已经浏览了大约 1500 磅。我看到的那些,人们要么发送了错误的类型,要么他们在做一些偏颇的事情。在我的情况下,我都没有这样做。所以,我的确切错误是:
传入字典的模型项的类型为“ClanSite.Models.ViewModels.CategoryViewModel”,但此字典需要类型为“ClanSite.Models.ViewModels.UserLoginViewModel”的模型项。
问题是我的 _Layout.cshtml (@model ClanSite.Models.ViewModels.UserLoginViewModel) 上有一个模型,用于在每个页面上登录用户。
但是,在其中一个页面上,我正在尝试呈现类别列表。我的 CategoryViewModel 只包含一个类别列表,GetCategories() 返回该列表。
控制器
public ActionResult Categories()
{
CategoryViewModel cats = new CategoryViewModel();
try
{
cats.Categories = ForumQueries.GetCategories();
}
catch
{
return RedirectToAction("Message", new { msg = "categories" });
}
return View(cats);
}
看法
@model ClanSite.Models.ViewModels.CategoryViewModel
@{
ViewBag.Title = "clanSite - Categories";
}
<div class="forumPostTable">
@foreach (ClanSite.Models.Tables.Join.Category cat in Model.Categories)
{
<div class="forumPostTableRow cursorPointer" onclick="linkTo('@Url.Action("Index", "Home")')">
<div class="forumCategoryTableCellTitle">
<div class="forumCategoryTitle">
<a href="" class="linkNoDecGold">Title</a>
</div>
<div class="forumCategoryTitleDesc">
@cat.CategoryInfo.Description
</div>
</div>
</div>
}
</div>
当我尝试转到此页面时,我收到错误消息。我使用调试器逐步浏览了该页面,并在以下位置获取了正确的数据:@cat.CategoryInfo.Description
这真的让我很困惑,因为我能够使用该模型在另一个页面上创建用户注册表单而没有任何问题。那么,如何在 _Layout 和视图中使用模型,而我只是在其中循环输出数据?