如何为用户提供从站点获取个人资料的链接?

时间:2013-06-30 20:51:01

标签: asp.net

某些网站,如StackOverflow,about.me等......为其用户提供一个链接,可以放置在任何网站/网络日志上以显示用户个人资料或任何类型的数据,如此(在StackOverFlow.com上的天赋) :

<a href="http://stackoverflow.com/users/***/***">
<img src="http://stackoverflow.com/users/flair/***.png" width="208" height="58" alt="profile for USERNAME at Stack Overflow, Q&amp;A for professional and enthusiast programmers" title="profile for UserNAME at Stack Overflow, Q&amp;A for professional and enthusiast programmers">
</a>

用户可以看到他们自己的个人资料 简而言之,它是如何实现的?

编辑:我应该使用网络服务吗?

此致

2 个答案:

答案 0 :(得分:0)

如果您使用ASP.NET Membership,则可以非常简单地执行此操作。 HttpContext.Current.User.Identity.Name

这样的东西为您提供当前登录用户的用户名。在Web窗体中,将超链接放在母版页上,并在代码后面动态设置href和链接文本。在MVC Razor中,您可以将其放在布局页面上。

如果是您自己的会员系统,请检查会话中的ID,并获取所需的用户信息。

答案 1 :(得分:0)

以下是如何使用标准ASP.NET成员资格动态链接到活动用户的配置文件的简单示例。我在谈论ASP.NET WebForms。

  1. 创建具有类似内容的自定义ASP.NET控件UserProfileLink.ascx

    <asp:HyperLink ID="Link" runat="server" NavigateUrl="<%# Url %>" Text="<%# UserName %>" />
    
  2. 在此控件的代码后面定义了2个属性:

    public string UserName
    {
        get
        {
            return HttpContext.Current.User.Identity.Name;
        }
    }
    
    public string Url
    {
        get
        {
            MembershipUser user = Membership.GetUser();
            Debug.Assert(user != null);
    
            return string.Format("~/users/{0}/", (Guid)user.ProviderUserKey);
        }
    }
    
  3. 在此控件后面的代码中覆盖OnLoad:

    protected override void OnLoad(EventArgs e)
    {
        Link.DataBind();
    
        base.OnLoad(e);
    }
    
  4. 在您的页面上使用LoginView控件中的UserProfileLink控件:

    <asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false">
       <AnonymousTemplate>
       ..
       </AnonymousTemplate>
       <LoggedInTemplate>
           <uc:UserProfileLink ID="UserProfileLink" runat="server" />
           ...
       </LoggedInTemplate>
    </asp:LoginView>