C# @Html.Partial return:传递到字典中的模型项的类型为_u,但此字典需要类型为的模型项__

C# @Html.Partial return:传递到字典中的模型项的类型为_u,但此字典需要类型为的模型项__,c#,asp.net-mvc,entity-framework,razor,partial-views,C#,Asp.net Mvc,Entity Framework,Razor,Partial Views,我试图向MVC4 web应用程序添加部分视图,但收到以下异常: 传递到字典中的模型项的类型为“…Meeting”,但此字典需要类型为“System.Collections.Generic.List`1[…UserProfile]”的模型项 到目前为止我所做的: 我在控制器中添加了以下功能: 我添加了parital视图: 你能告诉我我做错什么了吗 谢谢大家! 请仔细查看GetUsers()操作,您正在将List类型的模型传递给partial view,其中作为partial view接受List类

我试图向MVC4 web应用程序添加部分视图,但收到以下异常:

传递到字典中的模型项的类型为“…Meeting”,但此字典需要类型为“System.Collections.Generic.List`1[…UserProfile]”的模型项

到目前为止我所做的:

  • 我在控制器中添加了以下功能:
  • 我添加了parital视图:
  • 你能告诉我我做错什么了吗

    谢谢大家!

    请仔细查看GetUsers()操作,您正在将List类型的模型传递给partial view,其中作为partial view接受List类型


    解决方案是发送一个正确类型的部分视图所接受的内容。

    当您使用
    Html.partial
    时,似乎从未调用
    GetUsers
    操作。也许你想使用儿童动作:

    @Html.Action("GetUsers")
    
    签出以更好地理解
    Html.Partial
    Html.Action
    之间的差异

    另外,使用
    foreach
    循环而不是使用
    Html.DropDownList
    helper生成下拉列表似乎非常不合适。也许你想用这个助手,是不是:

    @model List<...UserProfile>
    @Html.DropDown(
        "Meeting.SetToUser", 
        new SelectList(
            Model.Select(x => new 
            { 
                UserId = x.UserId, 
                FullName = string.Format("{0} {1}", x.FirstName, x.LastName) }
            ),
            "UserId", 
            "FullName"
       )
    )
    
    @型号列表
    @Html.0下拉列表(
    “会议,塞图瑟”,
    新选择列表(
    Model.Select(x=>new
    { 
    UserId=x.UserId,
    FullName=string.Format(“{0}{1}”,x.FirstName,x.LastName)}
    ),
    “用户ID”,
    “全名”
    )
    )
    

    我还强烈建议您使用视图模型,而不是将域模型传递给视图。

    我的partialView类型是List,我还检查了控制器的方法,并将相同类型发送给partialView。@Shlo,但是你在哪里调用
    GetUsers
    操作呢?我想这样它就不会像你在这里回答的那样被调用了。。。采取行动解决了问题。下次我还会尝试一个断点,看看是否达到了该方法。谢谢,我指的是“局部视图”所属的视图。你从不要求你的行动。使用line
    @Html.Partial(“GetUsers”)
    只需渲染PartialView并将视图的模型传递给它,而不是
    List
    。谢谢@Zabavsky我理解我的问题。我开始行动了,谢谢你,达林!我把Html.Partial改成了Html.Action,效果很好。我会读你提供的文章。我很感激你的笔记,并会加以考虑。谢谢
    @Html.Partial("GetUsers")
    
    @Html.Action("GetUsers")
    
    @model List<...UserProfile>
    @Html.DropDown(
        "Meeting.SetToUser", 
        new SelectList(
            Model.Select(x => new 
            { 
                UserId = x.UserId, 
                FullName = string.Format("{0} {1}", x.FirstName, x.LastName) }
            ),
            "UserId", 
            "FullName"
       )
    )