Итак, у меня есть контактная форма в моем приложении MVC 2.
Я хотел бы программно отправить по электронной почте все свойства моего "ContactModel
".
Вот что я хотел бы сделать в коде psuedo-ish:
[HttpPost]
public ActionResult Contact(ContactModel model)
if(!ModelState.IsValid){
TempData["errorMessage"] = "You are a failure!";
return View(model);
}
else{
var htmlMessage = new StringBuilder("<table>");
const string templateRow = "<tr><td>{0}: </td><td><strong>{1}</strong></td></tr>";
/* ************************************************* */
/* This is the part I need some serious help with... */
/* ************************************************* */
foreach(var property in someEnumerableObjectBasedOnMyModel){
htmlMessage.AppendFormat(templateRow,
// the display name for the property
property.GetDisplayName(),
// the value the user input for the property (HTMLEncoded)
model[property.Key]
);
}
/* ************************************************* */
htmlMessage.Append("</table>");
// send the message...
SomeMagicalEmailer.Send("to@example.com", "from@example.com", "Subject of Message ", htmlMessage.ToString() );
TempData["message"] = "You are awesome!";
return RedirectToAction("Contact", "Home");
}
}
В случае, если это имеет значение ... ContactModel
устанавливает атрибуты DisplayName
следующим образом:
[DisplayName("First Name")]
public string FirstName {get; set ;}
Я бы хотел, чтобы это было красиво и сухо, не повторяя имена DisplayName.
В частности, я хотел бы перечислить каждое свойство в моей ContactModel, получить его DisplayName и получить его отправленное значение.