【发布时间】:2017-02-16 06:28:45
【问题描述】:
这个问题似乎在这个网站上被问过很多次,但我似乎仍然无法解决我的问题。我得到传递到字典的模型项是'X'类型,但是这个字典需要一个'Y'类型的模型项错误,即使我很确定我的代码指向正确的位置并接收正确的视图模型。
查看(索引)
@model EveryNationRandburg.ViewModels.AllUsers
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Church Members</h2>
<p>@Html.ActionLink("New Member", "Register", "Account", null, new { @class = "btn btn-primary" })</p>
<table class="table table-bordered table-hover" id="kerkmembers">
<thead>
<tr>
<th>Member</th>
<th>Email</th>
<th>Contact Number</th>
</tr>
</thead>
<tbody>
@foreach (var member in Model.AlleKerkMembers)
{
<tr>
<td>@Html.ActionLink(@member.UserName, "Edit", "KerkMember", new {id = @member.Id}, null)</td>
<td>@member.Email</td>
<td>@member.PhoneNumber</td>
</tr>
}
</tbody>
</table>
@section scripts
{
<script>
$(document).ready(function (){
$("#kerkmembers").DataTable();
})
</script>
}
视图模型
public class AllUsers
{
public List<ApplicationUser> AlleKerkMembers = new List<ApplicationUser>();
}
账户控制人
public ActionResult Index()
{
var viewModel = new AllUsers
{
AlleKerkMembers = _context.Users.ToList()
};
return View(viewModel);
}
堆栈跟踪
InvalidOperationException:传入字典的模型项的类型为“EveryNationRandburg.ViewModels.AllUsers”,但此字典需要类型为“EveryNationRandburg.ViewModels.KonnekGroepViewModel”的模型项。
我的问题略有不同的是,每当我尝试将 viewModel 发送到视图时,我总是会收到错误消息,说它期待“Y”类型的项目(无论我声明什么模型,总是相同的)在我的视野顶部)
【问题讨论】:
-
错误信息指向哪一行?是否 return View(viewModel); 您可以将整个错误消息添加到问题描述中。
-
尝试清除解决方案,重启visual studio
-
错误很明显-您将
AllUsers的模型传递给期望KonnekGroepViewModel的视图,但您没有显示相关代码(具有KonnekGroepViewModel的视图或您如何称呼它)。最好的猜测是您在主视图中使用@Html.Partial()。 -
嗨@StephenMuecke,我已经添加了完整视图。如您所见,我期望的模型是 AllUsers。我可以逐步浏览视图并验证我收到的数据是否正确
-
再次 - 阅读错误。您没有向我们展示正确的代码。在某个地方,您有一个带有
@model KonnekGroepViewModel的视图,您正在调用它,但正在传递一个AllUsers的实例。阅读列出主要原因的欺骗。
标签: c# asp.net-mvc entity-framework viewmodel viewcontroller