Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有办法在asp.net中查看其他应用程序用户配置文件?_C#_Asp.net Mvc_Asp.net Identity - Fatal编程技术网

C# 是否有办法在asp.net中查看其他应用程序用户配置文件?

C# 是否有办法在asp.net中查看其他应用程序用户配置文件?,c#,asp.net-mvc,asp.net-identity,C#,Asp.net Mvc,Asp.net Identity,当使用Identity并将用户信息保存在默认EF framework数据库的aspnetUsers表中时,我很好奇。是否有一种方法可以将属性呈现到一个视图,当应用程序运行时,其他用户可以同时打开该视图。我有一个问题,我只是得到当前用户。我需要建立一个用户搜索子系统,可以显示用户,并有一个链接到他们的个人资料 例如,我在Identity.Models中向ApplicationUser添加了属性 public` string displayName { get; set; } public str

当使用Identity并将用户信息保存在默认EF framework数据库的aspnetUsers表中时,我很好奇。是否有一种方法可以将属性呈现到一个视图,当应用程序运行时,其他用户可以同时打开该视图。我有一个问题,我只是得到当前用户。我需要建立一个用户搜索子系统,可以显示用户,并有一个链接到他们的个人资料

例如,我在Identity.Models中向ApplicationUser添加了属性

public` string displayName { get; set; }

public string age { get; set; }

public string description { get; set; }
在我的家庭控制器(我知道它在大约,但我只是测试,看看它是否工作)

关于()的公共行动结果 {

        // 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();
    }
//实例化ASP.NET标识系统
var manager=newusermanager(newuserstore(newapplicationdbcontext());
var currentUser=manager.FindById(User.Identity.GetUserId());
//恢复有关已登录用户的配置文件信息
ViewBag.displayName=currentUser.displayName;
ViewBag.age=currentUser.age;
ViewBag.description=currentUser.description;
////////
var usr=User.Identity.Name;
//var usrName=;
ViewBag.Message=usr;
返回视图();
}
在我看来

@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>
@使用Microsoft.AspNet.Identity;
@{
ViewBag.Title=“关于”;
}
@ViewBag.Title。
@查看包。留言
@ViewBag.displayName
@ViewBag.age
@ViewBag.description

我可以看到当前的用户属性,但我想知道asp.net如何与其他应用程序用户交互以查看其他配置文件?我知道程序正在做我要求它做的事情(将当前用户的属性放在about视图中)但是我有点不知道下一步该怎么做。

创建一个视图模型让我们称之为
ProfileViewModel
这是您将在他们的配置文件中向用户显示的内容,所以请用您希望向用户显示的属性填充它(确保如果您有任何额外的属性,它也必须添加到
ApplicationUser
),现在,一个用户单击其配置文件页面并想要查看他的配置文件,使用标识可以获取其用户ID,或者将其存储在
会话
cookie
中。因此,如果两个用户同时单击配置文件,则每个用户都有自己的配置文件,而不是彼此显示(
user.identity.GetUserId()
)将为您提供用户ID

现在,在您的
ActionResult
中,您需要做的是根据
ApplicationUser的
UserId
获取一个
ApplicationUser的实体,并从
ApplicationUser
中填充
ProfileViewModel
,然后将其传递给您的视图

这就是获取当前
应用程序用户的方式:

var user = UserManager.FindById(User.Identity.GetUserId());
以及如何填充ProfileViewModel:

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

你可以在你的个人资料中使用ViewModel,用你想显示的信息填充它,然后随视图一起发送。谢谢,我对此有点生疏。所以我会通过viewmodel传递信息,这会给每个用户一个唯一的url吗?应用程序上的每个用户都会有自己的viewModel。如果两个人同时打开,他们可以查看另一个人的viewModel,还是只有他们当前的用户信息?好的,我要试试这个。但是,这难道不会将相同的信息带到profileVeiwModel(只显示当前登录用户的属性,但在profileViewModel中而不是AboutView中)吗?我已经做了同样的事情?假设存在用户A和用户B。用户A希望查看用户B的profileViewModel,反之亦然。谢谢btw@fasecity在这种情况下,您需要在视图中创建ApplicationUser列表,例如,每当您单击某个用户时,该用户必须使用例如
querystring
将其id发送到您的actionresult,然后您就有了一个id,您可以使用
FindById
创建实体,并基于该实体填充ProfileViewModel并显示它,@fasecity这是嘿,我似乎无法使用该链接中的信息在应用程序用户中进行迭代。我的大脑已经死了,所以我要去睡觉了,希望以后能找到答案。谢谢你的帮助。我一直在寻找这样一个带着疑问的答案。