似乎已经问了这个问题并在此站点上大量解决了很多问题,但是我似乎仍然无法解决问题。我将模型项传递到字典中是" x"类型,但是该词典需要类型" y"错误的模型项,即使我很确定我的代码指向正确的位置并接收到正确的ViewModel。
view(index)
@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>
}
ViewModel
public class AllUsers
{
public List<ApplicationUser> AlleKerkMembers = new List<ApplicationUser>();
}
帐户控制器
public ActionResult Index()
{
var viewModel = new AllUsers
{
AlleKerkMembers = _context.Users.ToList()
};
return View(viewModel);
}
stacktrace
ivalidoperationException:传递到字典中的模型项为'everynationrandburg.viewmodels.allusers'类型,但是该字典需要类型的模型项'everynationrandburg.viewmodels.konnekgroepviewmodel'。
我的问题略有不同是,每当我尝试将ViewModel发送到视图时,我总是会出现错误,说它期望类型'y'的项目(无论我声明哪种型号,在我看来的顶部)
我建议的第一件事是将调试器附加到您的代码上,并查看您正在处理的值。使用调试器,您可以看到我们在这里看不到的调用堆栈。
您在哪里使用return View(viewModel);
的结果?
您没有视图构造函数的列表。
您的视图期望的对象类型是什么?应该是AllUsers
,因为您将AllUsers
对象传递给它。
您可以尝试使用显式类型而不是VAR,以确保您正在传递正确的对象类型。代码也更容易阅读。
请附加您的调试器并尝试以这种方式解决。