C# 传入视图的类型错误-ASP.NET MVC 5
我正在尝试创建一个可以与两个不同模型一起工作的视图。但我不断发现视图中传递的错误类型错误: 传递到字典中的模型项的类型为“System.Data.Entity.DynamicProxies.ApplicationUser_D1BDF9065CBD1B8BC24F5E69AC3CAB19A6C7FB8624B0C443512D881B7C9CA2”, 但此词典需要类型为的模型项 “StudentBookProject.ViewModel.UserPostWrapper” 我创建了一个简单的包装类来访问两个独立类的所有属性,如下所示:C# 传入视图的类型错误-ASP.NET MVC 5,c#,asp.net-mvc,razor,asp.net-mvc-5,C#,Asp.net Mvc,Razor,Asp.net Mvc 5,我正在尝试创建一个可以与两个不同模型一起工作的视图。但我不断发现视图中传递的错误类型错误: 传递到字典中的模型项的类型为“System.Data.Entity.DynamicProxies.ApplicationUser_D1BDF9065CBD1B8BC24F5E69AC3CAB19A6C7FB8624B0C443512D881B7C9CA2”, 但此词典需要类型为的模型项 “StudentBookProject.ViewModel.UserPostWrapper” 我创建了一个简单的包装类来
public class UserPostWrapper
{
public ApplicationUser UserInfoObject { get; set; }
public List<Post> PostInfoObject { get; set; }
}
我不确定我是否理解正在发生的事情。如果我已经明确定义了在视图中使用的模型,那么谁在向视图传递错误的模型类型?
有人知道我错过了什么吗?这种方法可行吗?将您的操作更改为:
[Authorize]
public ActionResult GetCurrentUser()
{
var user = UserManager.FindById(User.Identity.GetUserId());
var model = new UserPostWrapper { UserInfoObject = user};
return View(model);
}
正如我在评论中所说的,您正在向视图中传递一个不同的模型。视图需要
UserPostWrapper
模型,但您正在传递ApplicationUser
模型。将您的操作更改为:
[Authorize]
public ActionResult GetCurrentUser()
{
var user = UserManager.FindById(User.Identity.GetUserId());
var model = new UserPostWrapper { UserInfoObject = user};
return View(model);
}
正如我在评论中所说的,您正在向视图中传递一个不同的模型。视图需要
UserPostWrapper
模型,但您正在传递ApplicationUser
模型。发布呈现此视图的操作。你在Action中的视图中填充了不正确的模型UserManager.FindById
返回什么类型?@VsevolodGoloviznin我刚刚添加的,它实际上是一个非常简单的方法,只返回要查看的当前用户信息…@dashy UserManager.FindById返回一个用户模型,通过传递的id找到…我也尝试将其分为两个视图。并使用部分视图进行发布,但我得到了相同的异常…发布呈现此视图的操作。你在Action中的视图中填充了不正确的模型UserManager.FindById
返回什么类型?@VsevolodGoloviznin我刚刚添加的,它实际上是一个非常简单的方法,只返回要查看的当前用户信息…@dashy UserManager.FindById返回一个用户模型,通过传递的id找到…我也尝试将其分为两个视图。并使用部分视图发布,但我得到了同样的例外…这是有效的,谢谢。我完全忘了检查哪个方法已经在使用该视图…:-/这很有效,谢谢。我完全忘了检查哪个方法已经在使用该视图…:-/
[Authorize]
public ActionResult GetCurrentUser()
{
var user = UserManager.FindById(User.Identity.GetUserId());
var model = new UserPostWrapper { UserInfoObject = user};
return View(model);
}