1

我已经使用 System.Web.Providers 设置了 ASP.NET MVC 4,现在我想添加更多用户信息,例如地址、生日等。

我还想将来自提供者的现有用户数据与帖子相关联,以便每个帖子都有来自提供者的作者。

我必须这样,当用户创建帖子时,关于用户的一切都必须(懒惰地)从选择该帖子中获得。

我可能正在考虑拥有一个包含UserProfile来自标准 MVC 模板项目(似乎与 HTTP 登录一起使用)和aspnet_users来自提供程序的类的 User 类,但我不确定如何去做。

这样做的常见方法是什么?

4

2 回答 2

1

我会建议去Providers。这些在ASP.NET中可用很长时间,并且仍在使用。它们的实现对于两者(WebFormsMVC)都是相同的,所以我建议阅读关于它们的综合教程

Profile功能正是提供用户特定信息的地方。它可以很容易地扩展并表示扩展点到Membership. 我们正在使用我们的一个Profile类:

public class ProjectProfile : ProfileBase 
{
    // TODO custom properties 
}

在 web.config 中配置

<profile defaultProvider="ProjectProfile" 
         inherits="MyLibrary.ProjectProfile, MyLibrary">
  <providers >
  <clear/>
  <add name="ProjectProfile" type="MyLibrary.ProjectProfileProvider, MyLibrary" />
  </providers>
</profile>

所以,System.Web.HttpContext.Current.Profile as ProjectProfile有需要的信息。

于 2012-12-01T08:20:01.097 回答
1

链接应为您提供实施 ProfileProvider 的所有信息

正如帖子中所建议的(他们使用第三个选项)以及在这个答案中,您应该考虑实现自己的逻辑以将配置文件绑定到当前活动用户

我使用配置文件类并扩展 MembershipUser'one 来实现我的类。这样我就可以用类似的方式访问它:

var user = Membership.GetUser();
var profile = user.Profile;
于 2012-12-01T08:24:36.983 回答