0

一些网站,如 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>

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

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

问候

4

2 回答 2

0

如果您使用 ASP.NET Membership,这是非常简单的方法。HttpContext.Current.User.Identity.Name

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

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

于 2013-06-30T23:12:16.847 回答
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>
    
于 2013-06-30T23:12:18.200 回答