2009-08-18 11 views
3

Nach Abschluss eines benutzerdefinierten Zahlungsformulars füge ich zwei Benutzerrollen, ein Badge und zwei Freunde hinzu. Alle diese Änderungen funktionieren gut und füllen das Benutzerobjekt und die entsprechenden Datenbanktabellen auf. Wenn ich den folgenden Code verwende (kopiert und geändert von Kentico CMS install), bekomme ich IsSubscribed == true, aber der Benutzer scheint niemals abonniert zu sein. Irgendwelche Ideen?In Kentico CMS, wie programmgesteuert abonnieren Sie Benutzer zu Newslettern?

int newsletterId = 3; 
Subscriber sb = SubscriberProvider.GetSubscriber("cms.user", currentUser.UserID); 
    if (sb == null) 
    { 
      // Create new subscriber 
      sb = SaveSubscriber(); // CreateSubscriber(value[0], itemId); 
     } 
     // If subscriber exists and is not subscribed, subscribe him 
     if ((sb != null) && (!SubscriberProvider.IsSubscribed(sb.SubscriberID, newsletterId))) 
     { 
     try 
     { 
      SubscriberProvider.Subscribe(sb.SubscriberID, newsletterId, DateTime.Now, false); 
      lblTroubledUser.Text = "shoulda been subscribed to newsletter"; 
     } 
     catch 
     { 
       lblTroubledUser.Text = "problem subscribing to newsletter"; 
     } 
     } 
     else 
      lblTroubledUser.Text = (!SubscriberProvider.IsSubscribed(sb.SubscriberID, newsletterId)) ? "sb is null" : "already subscribed to newsletter!"; 

Antwort

5

Verstanden! Nachdem Sie den Abonnenten aufgebaut haben, müssen Sie diese dem Newsletter hinzufügen. Sie müssen verwenden:

SubscriberNewsletterInfoProvider.AddSubscriberToNewsletter(sb.SubscriberID, newsletterId, DateTime.Now);