0

プログラムで新しいメンバーを作成しようとしています。実際、スプレッドシートからメンバーをインポートする関数を作成する必要があります。

ProfileBase を継承し、登録時にプログラムで 1 つのメンバーを作成できる Member クラスを作成しますが、完全なプロファイルを更新するにはログインする必要があります。メンバーが登録し、メンバーシップが作成され、私が彼をログインさせ、プロフィールを作成し、ログアウトさせます。これはユーザーには見えませんが、バックグラウンドでうまく機能します。

ここで、umbraco バック オフィスの機能を使用してメンバーをインポートする必要があります。メンバーを作成できますが、web.config、umbraco、およびメンバー クラスで設定されたカスタム プロパティを使用するプロファイルを更新できません。データベースに空のプロファイルが表示されます。

この場合、私に何ができるでしょうか?メンバーをログインさせずにメンバー プロフィールを更新するにはどうすればよいですか? ありがとうございました

4

1 に答える 1

0

私は最近、Member クラスが次のように見える (または少なくとも同じことをする) と仮定して、非常に似たようなことをしました。

public class MemberProfile : ProfileBase
{
    #region Firstname
    private const string FIRSTNAME = "_firstname";
    [SettingsAllowAnonymous(false)]
    public string FirstName
    {
        get
        {
            return GetCustomProperty(FIRSTNAME);
        }
        set
        {
            SetCustomProperty(FIRSTNAME, value);
        }
    } 
    #endregion

    #region Get and Set base properties

    private string GetCustomProperty(string propertyName)
    {
        var retVal = "";
        var prop = base.GetPropertyValue(propertyName);
        if (prop != null)
        {
            retVal = prop.ToString();
        }
        return retVal;
    }
    private void SetCustomProperty(string propertyName, object value)
    {
        var prop = base[propertyName];
        if (prop != null)
        {
            base.SetPropertyValue(propertyName, value);
        }
    }

    #endregion
}

次に、次のメソッドを使用すると、メンバーを取得し、プロパティを更新して保存できます。

var existingMember = MemberProfile.Create(username) as MemberProfile;
existingMember.FirstName = firstName;

existingMember.Save();

紛らわしいのは、Create() メソッドが実際に既存のユーザーを返すことです。彼らは、何らかの理由でそれを create と呼んだだけです...

于 2013-07-26T14:48:16.653 に答える