为什么我的观点总是期望1个特定的ViewModel



似乎已经问了这个问题并在此站点上大量解决了很多问题,但是我似乎仍然无法解决问题。我将模型项传递到字典中是" 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,以确保您正在传递正确的对象类型。代码也更容易阅读。

请附加您的调试器并尝试以这种方式解决。

相关内容

  • 没有找到相关文章

最新更新