Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我的视图总是期望有一个特定的viewmodel?_C#_Asp.net Mvc_Entity Framework_Viewmodel_Viewcontroller - Fatal编程技术网

C# 为什么我的视图总是期望有一个特定的viewmodel?

C# 为什么我的视图总是期望有一个特定的viewmodel?,c#,asp.net-mvc,entity-framework,viewmodel,viewcontroller,C#,Asp.net Mvc,Entity Framework,Viewmodel,Viewcontroller,这个问题似乎在这个网站上被问了很多,也被问了很多,但我似乎仍然无法解决我的问题。我正在获取传递到字典中的模型项的类型为“X”,但此字典需要类型为“Y”的模型项错误,尽管我非常确定我的代码指向了正确的位置并接收到了正确的viewModel 查看(索引) StackTrace InvalidOperationException:传入字典的模型项的类型为“EveryNationRandburg.ViewModels.AllUsers”,但此字典需要类型为“EveryNationRandburg.Vie

这个问题似乎在这个网站上被问了很多,也被问了很多,但我似乎仍然无法解决我的问题。我正在获取传递到字典中的模型项的类型为“X”,但此字典需要类型为“Y”的模型项错误,尽管我非常确定我的代码指向了正确的位置并接收到了正确的viewModel

查看(索引)

StackTrace

InvalidOperationException:传入字典的模型项的类型为“EveryNationRandburg.ViewModels.AllUsers”,但此字典需要类型为“EveryNationRandburg.ViewModels.KonnekGroepViewModel”的模型项


与我的问题稍有不同的是,每当我尝试将viewModel发送到视图时,总会收到一个错误,说它需要类型为“Y”的项(无论我在视图顶部声明的是什么模型,总是相同的项)

我建议的第一件事是在代码中附加一个调试器,并查看您正在处理的值。通过调试器,您可以看到调用堆栈,而我们在这里看不到

在哪里使用返回视图(viewModel)的结果

您没有视图构造函数的列表

您的视图所期望的对象类型是什么? 应该是
AllUsers
,因为您正在向它传递
AllUsers
对象

您可以尝试使用显式类型而不是var,以确保传递的对象类型正确。代码也更容易阅读


请连接调试器并尝试以这种方式解决问题。

错误消息指向哪一行?是否为返回视图(viewModel);您可以将整个错误消息添加到问题描述中。尝试清除解决方案,重新启动visual Studio错误明显-您的传递模型是
AllUsers
,但您尚未显示相关代码,该视图需要
KonnekGroepViewModel
(包含
KonnekGroepViewModel
的视图或您如何称呼它)。最好的猜测是您使用
@Html.Partial()
在主视图中。您好@StephenMuecke,我已经添加了完整视图。如您所见,我期望的模型是AllUsers。我可以单步查看视图,并验证我在itAgain中收到的数据是否正确-读取错误。您没有向我们显示正确的代码。在某个地方,您有一个使用
@model KonnekGroepViewModel
的视图,您可以使用该视图正在调用,但正在传递一个
AllUsers
的实例。请阅读dupe,其中列出了主要原因。Hi@KettuJKL在调试时,我可以一步一步地浏览整个视图,没有任何错误。我可以通过viewmodel(AllUsers)实际看到传递给视图的对象我在此视图中呈现一个表,并显示数据库中所有用户的一些详细信息。一旦代码退出视图,它就会进入Dispose()控制器的方法。一步一步地执行,没有错误,然后突然崩溃。我已清理、重建并重新启动,不知道这是为什么造成的。能否请您在问题和调试日志中添加其他说明?我的意思是,它发生在Dispose方法和崩溃日志中。有人可能会立即看到发生了什么。Ohke,添加了错误的堆栈跟踪
@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);
}