2013-05-30 2 views
0

나는 새로운 회원을 만들려고 노력하고 있습니다. 사실 스프레드 시트에서 멤버를 가져 오는 함수를 작성해야합니다.umbrac에서 프로그래밍 방식으로 회원 프로필 만들기

ProfileBase를 상속 한 Member 클래스를 만들고 등록 할 때 programaticaly 멤버 하나를 만들 수 있지만 전체 프로필을 업데이트하려면 로그인해야합니다. 회원이 등록하면 회원 가입이 생성되고, 로그인하고, 프로필을 작성하고 로그 아웃합니다. 이것은 사용자에게는 보이지 않지만 백그라운드에서 잘 작동합니다.

이제 umbraco back office의 기능을 통해 회원을 가져와야합니다. 회원을 만들 수 있지만 web.config, umbraco 및 회원 클래스에 설정된 사용자 정의 속성을 사용하는 프로필을 업데이트 할 수 없습니다. 나는 데이터베이스에서 빈 프로파일을 얻는다.

이 경우 어떻게해야할까요? 회원을 로깅하지 않고 회원 프로필을 업데이트하는 방법은 무엇입니까? 고맙습니다.

+1

CMSImport는 Excel에서 회원을 가져올 수 있으며 무료 버전은 무료로 500을 가져올 수 있습니다. http : // soetemansoftware .nl/cmsimport/features – jakobandersen

+0

감사합니다. @miracledev 하지만 저는 500 명 이상의 회원을 보유하고 있으며, 회사는 단 하나의 운영을 위해 연봉을 지불하지 않을 것입니다. 어쨌든 나는 이미 모든 API를 만들었습니다. 프로파일을 업데이트 할 수없는 경우에만 가능합니다. – nickornotto

+0

이미 가지고있는 코드를 게시 할 수 있습니까? –

답변

0

회원 등급이 다음과 같거나 (적어도 똑같은 것을 가정 할 때) 나는 최근에 아주 비슷한 것을했습니다. 그런 다음

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(); 

을, 그들은 그냥 어떤 이유로 만들라고 ...