2015-01-07 7 views
6

Umbracoサイト用の新しいメンバーをプログラムで作成しようとしていますが、これを正しく実行しているとは確信していません。Umbracoでプログラムで新しいメンバーを作成する

私のコードは次のようになります。

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

しかし、私は自分のコードを実行すると、私は何が私のUmbracoに表示されて見ることができません。誰かが私が間違ったことを教えてもらえますか?

答えて

0

Umbracoのバージョンによって、提供されたコードサンプルが古くなっています。

Umbraco 4は はすぐにASP.NETで提供されているすべての抽象クラスがアクセス可能であることを意味し、ASP.NET メンバーシップ・プロバイダー・モデルを使用するUmbracoメンバーシップモデルを変更しました Umbracoメンバー。 ASP.NETメンバーシップを使用するためのMSDN(および他の サイト)には豊富なリソースがありますが、ここには の開始点があります。

記事:

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

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

3

被写体がかなり複雑ですが、以下は、右のトラックにあなたを置く必要があり、あなたのモデルとコントローラのためのいくつかのコードです。これを実現するにはMVCについて十分に知っていただければ幸いです。

あなたのモデルは、次のようなものが含まれている可能性があり、あなたのコントローラは、以下のようなものかもしれないあなたのビューからの入力

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; } 
     } 
} 

移入すること:あなたがumbraco 7を使用している場合

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

メンバーサービスを利用するのが最善です。以下は、これを達成するための簡単なアプローチです。

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); 
} 
関連する問題