わかりました、このような質問が山ほどあり、私は約 1500 ポンドに目を通しました。私が見たものは、人々が間違ったタイプを送っているか、部分的な見方で何かをしていた. 私の場合はどちらもしていません。だから、私の正確なエラーは次のとおりです。
ディクショナリに渡されたモデル アイテムのタイプは「ClanSite.Models.ViewModels.CategoryViewModel」ですが、このディクショナリにはタイプ「ClanSite.Models.ViewModels.UserLoginViewModel」のモデル アイテムが必要です。
問題は、_Layout.cshtml (@model ClanSite.Models.ViewModels.UserLoginViewModel) にモデルがあり、すべてのページでユーザーにログインするために使用されることです。
しかし、それらのページの 1 つで、カテゴリのリストをレンダリングしようとしています。私の 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 と View でモデルを使用するにはどうすればよいでしょうか?