2017-02-18 58 views
0

我很好奇,当使用身份和保存默认EF框架数据库中的aspnetUsers表内的用户信息。有没有办法将这些属性渲染到一个可以被其他用户查看的视图,这些用户在应用运行的同时都处于打开状态。我有一个问题,我只是得到当前用户。我需要建立一个用户搜索子系统,它可以显示用户并链接到他们的个人资料。有没有办法在asp.net中查看其他应用程序用户配置文件?

例如我添加的属性我ApplicationUser在Identity.Models

public` string displayName { get; set; } 

public string age { get; set; } 

public string description { get; set; } 
在我家控制器

(我知道它有关,但我只是测试,看看它的工作原理)

公众的ActionResult关于(){

 // Instantiate the ASP.NET Identity system 
     var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())); 
     var currentUser = manager.FindById(User.Identity.GetUserId()); 

     // Recover the profile information about the logged in user 
     ViewBag.displayName = currentUser.displayName; 
     ViewBag.age = currentUser.age; 
     ViewBag.description = currentUser.description; 



     //////// 
     var usr = User.Identity.Name; 
     // var usrName = ; 
     ViewBag.Message = usr; 

     return View(); 
    } 

在我关于视图

@using Microsoft.AspNet.Identity; 
@{ 
    ViewBag.Title = "About"; 

} 
<h2>@ViewBag.Title.</h2> 
<h3>@ViewBag.Message</h3> 
<h3>@ViewBag.displayName</h3> 
<h3>@ViewBag.age</h3> 
<h3>@ViewBag.description</h3> 

我可以看到当前的用户属性,但我试图弄清楚asp.net如何与其他应用程序用户交互以查看其他配置文件?我知道该程序正在做什么即时通讯要求它做(将当前用户的属性放在关于视图中),但我不知道下一步该去哪里。

+0

您可以使用视图模型为您的个人资料与你要显示的信息填写,并发送视图。 – Valkyrie

+0

感谢我在这一点点绿色。所以我会通过viewmodel传递信息给每个用户一个独特的url?应用程序上的每个用户将拥有自己的viewModel。如果两个人在同一时间可以查看其他人的viewModel,还是只有他们当前的用户信息? –

+0

看到我的回答:) – Valkyrie

回答

0

创建一个ViewModel让它叫做ProfileViewModel这就是你要在他们的个人资料中显示用户的地方,所以用你希望显示给用户的属性填充它(确保你是否有任何额外的属性需要添加到ApplicationUser),现在有一个用户点击其个人资料页面,并希望看到他的个人资料,使用身份可以获得其userId,或者您已将其存储在sessioncookie中,因此如果两个用户在同一时间点击了每个个人资料有自己的个人资料显示不相互(User.Identity.GetUserId())给你的userId。

现在您的ActionResult,你需要做的是让基于其UserId一个的ApplicationUser实体和填充从ApplicationUserProfileViewModel并且将它传递给你的视图。

你这是怎么获取当前ApplicationUser

var user = UserManager.FindById(User.Identity.GetUserId()); 

,如何填补你的ProfileViewModel:

var profile = new ProfileViewModel 
       { 
       UserName = user.Username, 
       //so on... 
       }; 
+0

好吧,我要去试试这个。但是,这不会将相同的信息传递给profileVeiwModel(只显示当前登录的用户的属性,但是在profileViewModel中,而不是AboutView中),这种做法与我已有的相同?假设有用户A和用户B.用户A想要查看用户B的profileViewModel,反之亦然。谢谢btw –

+0

@fasecity在这种情况下,你需要在一个视图中创建一个ApplicationUser列表,例如,每当你点击一个用户时,它必须发送它的id给你的actionresult,例如'querystring',那么你有一个id,你可以使用'FindById'创建实体并填充基于该实体的ProfileViewModel并显示它, – Valkyrie

+0

@fasecity这是[如何获取用户列表](http://stackoverflow.com/questions/21505592/getting-所有用户和所有角色通过ASP网络身份) – Valkyrie

相关问题