【问题标题】:Sending Email asp.net mvc 3发送电子邮件 asp.net mvc 3
【发布时间】:2013-01-21 19:00:03
【问题描述】:

我在使用 Email.SendMail() 时遇到问题。我需要从数据库的事件表中向“电子邮件消息”中添加更多详细信息,如 Event_Location、Event_Start 等,但 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);
}

成员模型类

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

}

事件模型类

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

【问题讨论】:

  • Member 和 Event 模型类是什么样的?
  • Member 中的 Event_ID 是对 Event 中 Event_ID 的外键引用吗?换句话说,每个成员都有一个事件吗?
  • 是的,会员被邀请参加一项活动

标签: asp.net-mvc asp.net-mvc-3 email


【解决方案1】:

您可以使用匿名方法仅返回您想要的那些属性,即:

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

【讨论】:

  • 感谢它的工作原理只是主题字符串的可读性有问题,它全部加入,我需要它分开吗?
  • 对不起,你能再解释一下吗,也许是个例子?
【解决方案2】:

如果您正确使用 ASP .NET MVC 的自动实体映射,它将为您完成所有连接。在成员中,您应该引用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);
}

【讨论】:

    猜你喜欢
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 2011-10-27
    相关资源
    最近更新 更多