C# 如何引用.NETMVC5';在不使用视图模型的情况下从视图中删除实体框架应用程序用户?
我使用默认的MVC5个人帐户模板和实体框架来处理身份验证。我有一个C# 如何引用.NETMVC5';在不使用视图模型的情况下从视图中删除实体框架应用程序用户?,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我使用默认的MVC5个人帐户模板和实体框架来处理身份验证。我有一个ApplicationUser,它继承了IdentityUser中的所有用户信息。当用户通过身份验证后,我可以从UserManager中获取他们的ApplicationUser,如下所示: var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())); va
ApplicationUser
,它继承了IdentityUser
中的所有用户信息。当用户通过身份验证后,我可以从UserManager
中获取他们的ApplicationUser
,如下所示:
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
var AppUser = manager.FindById(User.Identity.GetUserId());
ViewBag.User = AppUser;
var-manager=newusermanager(newuserstore(newapplicationdbcontext());
var AppUser=manager.FindById(User.Identity.GetUserId());
如何使该应用程序用户可用于所有视图?
我不想创建ViewModel,给它指定ApplicationUser
,然后将其发送到视图。这严重限制了灵活性
当使用基于IPrincipal的身份验证时,我可以使用
Thread.CurrentPrincipal
作为类的静态属性的一部分。在新的实体框架IdentityUser
世界中,这类东西是如何工作的?我并不提倡使用ViewBag
,但是如果您确实不喜欢使用ViewModel,您可以将您的ApplicationUser添加到ViewBag
中,如下所示:
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
var AppUser = manager.FindById(User.Identity.GetUserId());
ViewBag.User = AppUser;
我认为你最好创建自己的视图引擎来实现这一点,我真的不想创建自己的视图引擎。Razor很好。你仍然在使用基于IPrincipal的身份验证。我不想使用ViewBag。我正试图完全停止使用它。@JordanRoher-但是你宁愿通过强制视图进行数据访问来彻底打破关注点之间的分离?呵呵,我会的。我很感激我在某种程度上打破了最佳实践,但我希望能够在没有正式viewmodel的情况下访问用户数据。这不是针对企业级应用的。如果你不打算使用ViewModel,也不打算使用ViewBag,我没有其他建议。