Membership.GetUser与配置文件属性?

时间:2012-08-21 11:52:37

标签: c# asp.net-membership asp.net-profiles

我试图让所有用户使用我搜索属性的用户名。

MembershipUserCollection users = Membership.FindUsersByName(txtSearchName.Text + "%");
datalist1.DataSource = users;
datalist1.DataBind();

//In the datalist
<asp:Label ID="UserName" runat="server" Text='<%# Eval("Username") %>'></asp:Label>

上面的代码工作我可以从数据库中键入任何用户名,它将显示。 但是我还需要我在webconfig中指定的所有配置文件属性,如firstname,lastname等。

3 个答案:

答案 0 :(得分:0)

var profiles = ProfileManager.GetAllProfiles(ProfileAuthenticationOption.Authenticated)
datalist1.DataSource = profiles;
datalist1.DataBind();


<asp:Label ID="UserName" runat="server" Text='<%# Eval("UserName") %>'></asp:Label>
<asp:Label ID="FirstName" runat="server" Text='<%# Eval("FirstName") %>'></asp:Label>
<asp:Label ID="LastName" runat="server" Text='<%# Eval("LastName") %>'></asp:Label>

答案 1 :(得分:0)

您可以通过配置文件提供程序类

访问配置文件属性
var profile = ProfileBase.Create(userName);
var firstName = profile["FirstName"] as string;
var lastName = profile["LastName"] as string;

答案 2 :(得分:0)

我总是在业务逻辑层处理这个问题。您需要创建自定义类型以扩展您的配置文件属性并添加UserAccount属性:

    public static Profile GetProfile() {
        Profile profile = null;
        if (HttpContext.Current.User.Identity.IsAuthenticated) {
            var user = Membership.Provider.GetUser(HttpContext.Current.User.Identity.Name, false);
            if (user != null) {
                // an AD user who is already authed
                profile = ReferralsData.GetProfilesByProviderKey(user.UserName) ?? new Profile();
                profile.UserAccount = user;
            }
        }
        return profile;
    }