2015-01-07 12 views
6

में प्रोग्रामेटिक रूप से एक नया सदस्य बनाना, मैं प्रोग्रामिंग के रूप में अपने उम्ब्राको साइट के लिए एक नया सदस्य बनाने की कोशिश कर रहा हूं लेकिन मुझे विश्वास नहीं है कि मैं इसे सही तरीके से कर रहा हूं।उम्ब्राको

मेरे कोड इस तरह दिखता है:

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 4 ASP.NET सदस्यता प्रदाता मॉडल का उपयोग करने के Umbraco सदस्यता मॉडल बदल गया है, जिसका अर्थ है कि जो बाहर के-बॉक्स ASP.NET के साथ प्रदान की जाती हैं सभी सार वर्गों तक पहुँचने में सक्षम हैं उम्ब्राको सदस्य। एएसपी.NET सदस्यता का उपयोग करने के लिए एमएसडीएन (और अन्य साइट्स) पर बहुत अच्छे संसाधन हैं, सुझाए गए शुरुआती बिंदु यहां दिए गए हैं।

आलेख:

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

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

3

विषय काफी शामिल है, लेकिन निम्नलिखित अपने मॉडल और नियंत्रक है जो आप सही रास्ते पर रखना चाहिए के लिए कुछ कोड है। उम्मीद है कि आप इसे पाने के लिए एमवीसी के बारे में पर्याप्त जानते हैं।

आपके मॉडल को निम्न की तरह कुछ हो सकता है और आपके विचार से इनपुट की जगह ले

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

आपका नियंत्रक निम्नलिखित की तरह कुछ हो सकता है:

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

आप Umbraco 7 का उपयोग कर रहे हैं, तो यह सदस्य सेवा उपयोगकर्ता के लिए सबसे अच्छा है। नीचे एक सरल दृष्टिकोण है जिसे आप इसे प्राप्त करने के लिए नियोजित कर सकते हैं।

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); 
} 
संबंधित मुद्दे