En FULLT CODE-formatert kopi av denne artikkelen er tilgjengelig på CODEGOLEM BLOG
UPDATE: Du kan også lese denne artikkelen om CODING en gjenbrukbar HELPER MAILER CLASSable å sende malbasert e-post med innebygde Images
Husk at du kan bruke alle UserControl, med noen form for barnekontroller i it.For eksempel kan dette være en ordrebekreftelse post, med GriView bundet til en Datatable .eller kanskje en brukerregistrering e-post, ved hjelp av en FormView som en oppsummering av brukerens profildata.
Jeg vil bruke en enkel UserControl med en enkelt etikett, bare for å vise hvordan det hele fungerer.
< p> [code: html]
Hei
Dette er en UserControl basert postmal [/code]
Dette er en UserControl som de vi vanligvis bruker i vår. webprosjekter.
Jeg bruker her en etikett som plassholder for destinasjonen name.We kunne bruke så mange slike merkelapper som trengs i vår mal, eller til og med bilder, så lenge deres Bildeadresse er satt til absolutte URLer .
Andre trinn: erklære et grensesnitt for vår mal
[code: c #].
felles grensesnitt IMailTemplate {string DestinationName {får; sett; }} [/code]
Vi vil få tilgang til feltet vårt mal er gjennom dette grensesnittet
La oss endre vår UserControl er codebehind å ha det implementere IMailTemplate grensesnittet
[code..: c #] offentlig delvis klasse TemplateMailer_MailTemplate: System.Web.UI.UserControl, IMailTemplate {public string DestinationName {får {return DestinationNameLabel.Text; } Satt {DestinationNameLabel.
Text = verdi; }}} [/Code]
Vår DestinationName eiendom blir og setter verdien av merket vi brukt som en plassholder.
Til slutt, for å fullføre denne lille magi, her er koden for å lage a. MailMessage ved hjelp av HTML-kode genereres av vår mal UserControl
Si vi har en ASPX side med en knapp for å generere og sende e-mail.This kan være en enkel implementering av dens onclick hendelseshåndterer:
[code: c #] beskyttet void SubmitButton_Click (objekt avsenderen, EventArgs e) {Kontroll mailTemplate = LoadControl ("MailTemplate.
ascx"); ((IMailTemplate) mailTemplate) .DestinationName = "Destination Name"; Stringbuilder Stringbuilder = new Stringbuilder (); StringWriter stringWriter = new StringWriter (Stringbuilder); HtmlTextWriter htmlTextWriter = new HtmlTextWriter (stringWriter); mailTemplate.RenderControl (htmlTextWriter); htmlTextWriter.Close ();
string me