2017-02-18 23 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

相關問題