某些网站,如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&A for professional and enthusiast programmers" title="profile for UserNAME at Stack Overflow, Q&A for professional and enthusiast programmers">
</a>
用户可以看到他们自己的个人资料 简而言之,它是如何实现的?
编辑:我应该使用网络服务吗?
此致
答案 0 :(得分:0)
如果您使用ASP.NET Membership,则可以非常简单地执行此操作。 HttpContext.Current.User.Identity.Name
这样的东西为您提供当前登录用户的用户名。在Web窗体中,将超链接放在母版页上,并在代码后面动态设置href和链接文本。在MVC Razor中,您可以将其放在布局页面上。
如果是您自己的会员系统,请检查会话中的ID,并获取所需的用户信息。
答案 1 :(得分:0)
以下是如何使用标准ASP.NET成员资格动态链接到活动用户的配置文件的简单示例。我在谈论ASP.NET WebForms。
创建具有类似内容的自定义ASP.NET控件UserProfileLink.ascx
<asp:HyperLink ID="Link" runat="server" NavigateUrl="<%# Url %>" Text="<%# UserName %>" />
在此控件的代码后面定义了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);
}
}
在此控件后面的代码中覆盖OnLoad:
protected override void OnLoad(EventArgs e)
{
Link.DataBind();
base.OnLoad(e);
}
在您的页面上使用LoginView控件中的UserProfileLink控件:
<asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false">
<AnonymousTemplate>
..
</AnonymousTemplate>
<LoggedInTemplate>
<uc:UserProfileLink ID="UserProfileLink" runat="server" />
...
</LoggedInTemplate>
</asp:LoginView>