2011-08-17 5 views
1

J'ai un problème avec Email.SendMail(). J'ai besoin d'ajouter plus de détails comme Event_Location, Event_Start, etc à la "Email Msg" de la table des événements dans la base de données, mais l'objet var est déjà appelé par les événements. Je voudrais savoir s'il y a un moyen de mettre deux var i.e événements et membres soit dans la boucle foreach ou une autre méthode?Envoi de courrier électronique asp.net mvc 3

public void Send() 
{ 
    var events = from a in db.Members.ToList() 
       join e in db.Events.ToList() on a.Hobby_Code equals e.Hobby_Code 
       where a.Postal_Code == e.Postal_Code || e.Event_Status ==("A") 

    var member= from w in db.Members.TOList() 
       join z in db.Events.ToList() on w.Event_ID equals z.Event_ID 
       select w 

    foreach (var item in events) 
     Email.SendMail(item.Member_Email_Address,"Subject","Email Msg",false); 
} 

Modèle de pour les membres

public class Member 
    { 
    [Key] 
    [ScaffoldColumn(false)] 
    public int Member_ID { get; set; } 



    [Required(ErrorMessage = "A Section Name is required")] 
    [DisplayName("Section Name")] 
    public string Postal_Code { get; set; } 


    [Required(ErrorMessage = "An email address is required")] 
    [DisplayName("Email Address")] 
    public string Member_Email_Address { get; set; } 



    [DisplayName("Hobby Code")] 
    [Required(ErrorMessage = "A Hobby is required")] 
    public string Hobby_Code { get; set; } 

    [DisplayName("Event ID")] 
    public int? Event_ID { get; set; } 

    public string FullName 
    { 
     get 
     { 
      return Member_Last_Name + " " + Member_First_Name; 
     } 
    } 


    public virtual Section Section { get; set; } 
    public virtual Event Event { get; set; } 

} 

modèle de classe pour l'événement

 public class Event 
{ 

    [ScaffoldColumn(false)] 
    [Key] 
    public int Event_ID { get; set; } 

    [Required(ErrorMessage = "A Event Location is required")] 
    [DisplayName("Event Location")] 
    public string Postal_Code { get; set; } 

    [DisplayName("Event Status")] 
    public string Event_Status { get; set; } 

    [DisplayName("Event Start Date")] 
    [Required] 
    public DateTime Event_Start { get; set; } 

    [DisplayName("Event End Date")] 
    [Required] 
    public DateTime Event_End { get; set; } 

    [DisplayName("Event Type")] 
    [Required(ErrorMessage = "A Event Type is required")] 
    public string Hobby_Code { get; set; } 

    [Required] 
    [StringLength(100)] 
    [DataType(DataType.MultilineText)] 
    [DisplayName(" Event Description")] 
    public string Event_Description { get; set; } 
+0

À quoi ressemblent les classes de membre et de modèle d'événement? – link664

+0

Event_ID dans Member est-il une référence de clé étrangère à Event_ID dans Event? En d'autres termes, chaque membre a-t-il un événement? – link664

+0

Oui Les membres sont invités à un événement – Roo

Répondre

1

vous pouvez utiliser une méthode anonyme pour renvoyer uniquement les propriétés que vous voulez, à savoir:

var events = from a in db.Members.ToList() 
       join e in db.Events.ToList() on a.Hobby_Code equals e.Hobby_Code    
       where a.Postal_Code == e.Postal_Code || e.Event_Status ==("A") 
       select new { email = a.Member_Email_Address, location = e.Event_Location, eventStart = e.Event_Start}; 

puis accédez-y dans le pour la boucle comme ceci:

foreach (var item in events)  
    Email.SendMail(item.email,"Subject",String.Format("Location: {0}",item.location),false); // including all the other variables required and excluding the formatting 
+0

Merci cela fonctionne juste avoir un problème avec la lisibilité de la chaîne Sujet, son tout rejoint, je ai besoin d'être séparé? – Roo

+0

Désolé, pourriez-vous expliquer un peu plus, peut-être un exemple? –

0

Si vous utilisez correctement le mappage automatique des entités d'ASP.NET MVC, il fera toutes les jointures pour vous. Dans Member, vous devriez avoir une référence à Event event plutôt que Event_ID. Alors vous pouvez simplement faire:

foreach (var member in db.Members) 
{ 
    String msgBody = "You are invited to " && member.event.Event_Description && " on " && member.event.Event_Start; 

    Email.SendMail(member.Member_Email_Address,"Subject", msgBody, false); 
} 
Questions connexes