C# @Html.Partial return:传递到字典中的模型项的类型为_u,但此字典需要类型为的模型项__
我试图向MVC4 web应用程序添加部分视图,但收到以下异常: 传递到字典中的模型项的类型为“…Meeting”,但此字典需要类型为“System.Collections.Generic.List`1[…UserProfile]”的模型项 到目前为止我所做的: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类
解决方案是发送一个正确类型的部分视图所接受的内容。当您使用
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"
)
)