1

我正在尝试向我的 MVC4 Web 应用程序添加部分视图,但收到以下异常:

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

到目前为止我做了什么:

  1. 我在我的控制器中添加了这个功能:
public PartialViewResult GetUsers()
        {
            var usersList = (from users in db.Users select users).ToList();
            return PartialView(usersList);
        }
  1. 我添加了部分视图:
@model List<UserProfile>
@{
 <select id="Meeting_SetToUser" name="Meeting.SetToUser">
        @foreach (var item in Model)
        {
            <option value="@item.UserId">@item.FirstName @item.LastName</option>
        }
    </select>
}
  1. 我从我的角度调用了局部视图:
@Html.Partial("GetUsers")

你能告诉我我做错了什么吗?

谢谢!

4

2 回答 2

2

GetUsers您使用Html.Partial. 也许您想使用子动作:

@Html.Action("GetUsers")

查看以更好地了解和following article 之间的区别。Html.PartialHtml.Action

foreach同样使用循环而不是使用帮助器生成下拉列表Html.DropDownList似乎很不合适。也许你想使用这个助手,不是吗:

@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"
   )
)

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

于 2012-10-28T16:01:49.260 回答
0

仔细查看 GetUsers() 操作,您将 List 类型的模型传递给局部视图,其中局部视图接受 List<...UserProfile> 类型。

解决方案是发送部分视图接受的正确类型。

于 2012-10-28T15:37:11.080 回答