Отправка электронной почты asp.net mvc 3 - PullRequest
1 голос
/ 17 августа 2011

У меня проблема с использованием Email.SendMail ().Мне нужно добавить больше подробностей, таких как Event_Location, Event_Start и т. Д. В «Email Msg» из таблицы «События» в базе данных, но элемент var уже вызывается событиями.Я хотел бы знать, есть ли способ поместить два var, то есть события и члены, в цикл foreach или другой метод?

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

Model Class для Member

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

}

ModelКласс для события

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

Ответы [ 2 ]

1 голос
/ 17 августа 2011

вы можете использовать анонимный метод для возврата только тех свойств, которые вам нужны, например:

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

, а затем получить к нему доступ в цикле for следующим образом:

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 голосов
/ 17 августа 2011

Если вы правильно используете автоматическое сопоставление сущностей ASP .NET MVC, оно выполнит все объединения за вас.В Member вы должны иметь ссылку на Event event вместо Event_ID.Тогда вы можете просто сделать:

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...