2017-02-18 10 views
0

アイデンティティを使用し、デフォルトEFフレームワークデータベースのaspnetUsersテーブル内にユーザー情報を保存すると、興味があります。アプリケーションが実行されているときに同時にオンになっている他のユーザーが表示できるビューにプロパティをレンダリングする方法はありますか。私は今現在のユーザーを取得している問題を抱えています。私はユーザーを表示し、そのプロファイルへのリンクを持つことができるユーザー検索サブシステムを構築する必要があります。例えばasp.netの他のアプリケーションユーザープロファイルを表示する方法はありますか?

私はIdentity.Models私のホームコントローラ(私はおよそその中を知っているが、イムはちょうどそれが動作するかどうかを確認するテスト)

について公共のActionResultで

public` string displayName { get; set; } 

public string age { get; set; } 

public string description { get; set; } 

で私ApplicationUserにプロパティを追加しました()私について考慮して {

 // 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をアプリケーションに適用します。同時に2人で同時に他の人のviewModelを見ることができた場合、または現在のユーザー情報のみを持っている場合 –

+0

私の答えを見てください:) – Valkyrie

答えて

0

ViewModelを作成するProfileViewModelこれをプロファイルに表示するので、ユーザーに表示したいプロパティを入力します(追加する必要があるプロパティがあるかどうか確認してください)。 1人のユーザーが自分のプロフィールページをクリックし、自分のユーザーIDを取得できるIDを使用して、またはsessionまたはcookieに保存しているので、sametimeの2人のユーザーがそれぞれプロファイルをクリックした場合(User.Identity.GetUserId())あなたのuserIdを与えます。あなたが何をする必要があるか、あなたのActionResultで今

は、そのUserIdに基づいてApplicationUserの実体を取得し、ApplicationUserからProfileViewModelを記入し、あなたのビューにそれを渡すことです。

が、これはあなたが得る方法である現在のApplicationUser

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

そして、あなたのProfileViewModel記入する方法:あなたはあなたのプロフィールのためのViewModelを使用することができます

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

私はこれを試してみるつもりです。しかし、これはprofileVeiwModelに同じ情報を持ちません(現在ログインしているユーザーにプロパティを表示していますが、AboutViewの代わりにprofileViewModelに表示しています)。ユーザーAとユーザーBが存在するとします。ユーザーAはユーザーBのprofileViewModelを表示したい、その逆も同様です。ありがとうbtw –

+0

@fasecityその場合、例えば、ビューの中にApplicationUserのリストを作成する必要があります。ユーザをクリックするたびに、あなたのIDをあなたのactionresultに送信しなければなりません。たとえば、 'querystring'を使用してください。 「FindById」を使用してエンティティを作成し、そのエンティティに基づいてProfileViewModelを入力して表示することができます。 – Valkyrie

+0

@fasecityこれは[ユーザーのリストを取得する方法]です(http://stackoverflow.com/questions/21505592/getting- all-users-and-all-roles-through-asp-net-identity) – Valkyrie

関連する問題