2015-01-07 12 views
6

Umbraco sitem için programlı olarak yeni bir üye oluşturmaya çalışıyorum ancak bunu doğru yaptığımdan emin değilim.Umbraco uygulamasında program aracılığıyla yeni bir üye oluşturma

MemberType demoMemberType = new MemberType(1040); //id of membertype ‘demo’ 
Member newMember = Member.MakeNew(newEmployee.FirstName + " " + newEmployee.LastName, demoMemberType, new umbraco.BusinessLogic.User(0)); 

newMember.Email = "[email protected]"; 
newMember.Password = "password"; 
newMember.LoginName = "Test"; 
newMember.getProperty("firstName").Value = "test"; 

newMember.Save(); 

Ama benim kod çalıştırdığınızda, benim Umbraco görünen şey göremiyorum:

Benim kod şöyle görünür. Birisi bana yanlış yaptıklarımı söyleyebilir mi?

cevap

0

Umbraco sürümüne bağlı olarak, sağlanan kod örneği güncel değil.

Umbraco 4 Out-Of-Box ASP.NET ile sağlanan tüm soyut sınıflar erişebilen, yani ASP.NET üyelik sağlayıcısı modeli kullanmak üzere Umbraco üyelik modelini değiştirdi Umbraco Üye. MSDN (ve diğer siteler) ASP.NET Üyeliği kullanmak için bol miktarda iyi kaynak var, önerilen bir başlangıç ​​noktası burada.

makaleler:

http://our.umbraco.org/wiki/how-tos/membership-providers

http://msdn.microsoft.com/en-us/library/tw292whz.aspx

3

konu oldukça katılır ancak aşağıdaki modelinize ve doğru yolda koymalıyız denetleyicisi için bazı kodudur. Umarım bu gidiş için MVC hakkında yeterli bilginiz vardır.

Modeliniz aşağıdaki gibi bir şey içerebilir ve

using System.ComponentModel.DataAnnotations; 
    using System.Web; 

    namespace MyProject.Models 
    { 
     public class MemberModel 
     { 

      [Required] 
      public string Name { get; set; } 

      [Required] 
      [EmailAddress] 
      public string Email { get; set; } 

      [Required] 
      public string Password { get; set; } 
     } 
} 

Kişisel denetleyici aşağıdaki gibi bir şey olabilir senin görünümünden girişi ile doldurulması: Eğer 7 Umbraco

using System.Web.Mvc; 
using MyProject.Models; 
using Umbraco.Web.Mvc; 

namespace MyProject.Controllers 
{ 
    public class MemberController : SurfaceController 
    { 
     public ActionResult SignUp(MemberModel model) 
     { 
      if (!ModelState.IsValid) 
       return CurrentUmbracoPage(); 

      var memberService = Services.MemberService; 
      if (memberService.GetByEmail(model.Email) != null) 
      { 
       ModelState.AddModelError("", "Member already exists"); 
       return CurrentUmbracoPage(); 
      } 
      var member = memberService.CreateMemberWithIdentity(model.Email, model.Email, model.Name, "MyMemberType"); 

      memberService.Save(member); 

      memberService.SavePassword(member,model.Password); 

      Members.Login(model.Email, model.Password); 

      return Redirect("/"); 
     } 
    } 
} 
9

kullanıyorsanız Üye hizmeti kullanmak en iyisidir. Aşağıda, bunu başarmak için kullanabileceğiniz basit bir yaklaşımdır.

public int RegisterMember(string memberName, string emailAddress, string memberPassword, string memberTypeAlias, string memberGroupName) 
{ 
     int umbracoMemberId = -1; 

     if (!MemberExists(emailAddress)) 
     { 
      IMember newMember = ApplicationContext.Current.Services.MemberService.CreateMember(emailAddress, emailAddress, memberName, memberTypeAlias); 

      try 
      { 
       ApplicationContext.Current.Services.MemberService.Save(newMember); 
       ApplicationContext.Current.Services.MemberService.SavePassword(newMember, memberPassword); 
       ApplicationContext.Current.Services.MemberService.AssignRole(newMember.Id, memberGroupName); 
       umbracoMemberId = newMember.Id; 
      } 
      catch (Exception ex) 
      { 
       throw new Exception("Unable to create new member " + ex.Message); 
      } 
     } 

     return umbracoMemberId; 
} 


public bool MemberExists(string emailAddress) 
{ 
     return (ApplicationContext.Current.Services.MemberService.GetByEmail(emailAddress) != null); 
}