Část 8: Závěrečné stránky, zpracování výjimek a závěr

Joe Stagner

Tailspin Spyworks ukazuje, jak mimořádně jednoduché je vytvářet výkonné a škálovatelné aplikace pro platformu .NET. Ukazuje, jak používat skvělé nové funkce v ASP.NET 4 k vytvoření online obchodu, včetně nakupování, pokladny a správy.

Tato série kurzů podrobně popisuje všechny kroky potřebné k sestavení ukázkové aplikace Tailspin Spyworks. Část 8 přidává stránku kontaktu, stránku se stránkou a zpracováním výjimek. To je závěr série.

Stránka kontaktu (odesílání e-mailů z ASP.NET)

Vytvoření nové stránky s názvem ContactUs.aspx

Pomocí návrháře vytvořte následující formulář, který bude obsahovat toolkitScriptManager a ovládací prvek Editor z AjaxControlToolkit. .

Snímek obrazovky s novým formulářem

Poklikáním na tlačítko Odeslat vygenerujete obslužnou rutinu události click v souboru kódu a implementujete metodu odeslání kontaktních informací e-mailem.

protected void ImageButton_Submit_Click(object sender, ImageClickEventArgs e)
  {
  try 
    {
    MailMessage mMailMessage = new MailMessage();
    mMailMessage.From = new MailAddress(HttpUtility.HtmlEncode(TextBoxEmail.Text));
    mMailMessage.To.Add(new MailAddress("Your Email Here")); 

    // mMailMessage.Bcc.Add(new MailAddress(bcc));
    // mMailMessage.CC.Add(new MailAddress(cc));

   mMailMessage.Subject = "From:" + HttpUtility.HtmlEncode(TextBoxYourName.Text) + "-" + 
                                    HttpUtility.HtmlEncode(TextBoxSubject.Text);
   mMailMessage.Body = HttpUtility.HtmlEncode(EditorEmailMessageBody.Content); 
   mMailMessage.IsBodyHtml = true;
   mMailMessage.Priority = MailPriority.Normal;
   SmtpClient mSmtpClient = new SmtpClient();
   mSmtpClient.Send(mMailMessage);
   LabelMessage.Text = "Thank You - Your Message was sent.";
   }
 catch (Exception exp)
   {
   throw new Exception("ERROR: Unable to Send Contact - " + exp.Message.ToString(), exp);
   }
}

Tento kód vyžaduje, aby soubor web.config obsahoval v části konfigurace položku, která určuje server SMTP, který se má použít k odesílání pošty.

<system.net>
        <mailSettings>
            <smtp>
                <network
                     host="mail..com"
                     port="25"
                     userName=""
                     password="" />
            </smtp>
        </mailSettings>
    </system.net>

O stránce

Vytvořte stránku s názvem AboutUs.aspx a přidejte libovolný obsah.

Globální obslužná rutina výjimek

A konečně, v celé aplikaci jsme vyvolávali výjimky a existují nepředvídatelné okolnosti, které způsobí neošetřené výjimky v naší webové aplikaci.

Nikdy nechceme, aby se neošetřená výjimka zobrazovala návštěvníku webu.

Snímek obrazovky znázorňující neošetřenou výjimku

Kromě toho, že jsou špatné uživatelské zkušenosti neošetřené výjimky mohou být také bezpečnostní problém.

Abychom tento problém vyřešili, implementujeme globální obslužnou rutinu výjimek.

Chcete-li to provést, otevřete soubor Global.asax a poznamenejte si následující předgenerovanou obslužnou rutinu události.

void Application_Error(object sender, EventArgs e)
 {
 // Code that runs when an unhandled error occurs
 }

Následujícím způsobem přidejte kód pro implementaci obslužné rutiny Application_Error.

void Application_Error(object sender, EventArgs e)
 {
    Exception myEx =  Server.GetLastError();
    String RedirectUrlString = "~/Error.aspx?InnerErr=" + 
        myEx.InnerException.Message.ToString() + "&Err=" + myEx.Message.ToString();
    Response.Redirect(RedirectUrlString);
 }

Pak do řešení přidejte stránku s názvem Error.aspx a tento fragment kódu kódu.

<center>
  <div class="ContentHead">ERROR</div><br /><br />
  <asp:Label ID="Label_ErrorFrom" runat="server" Text="Label"></asp:Label><br /><br />
  <asp:Label ID="Label_ErrorMessage" runat="server" Text="Label"></asp:Label><br /><br />
</center>

Nyní v obslužné rutině události Page_Load extrahujte chybové zprávy z objektu Request.

protected void Page_Load(object sender, EventArgs e)
{
    Label_ErrorFrom.Text = Request["Err"].ToString();
    Label_ErrorMessage.Text = Request["InnerErr"].ToString();
}

Závěr

Viděli jsme, že ASP.NET WebForms usnadňuje vytvoření sofistikovaného webu s přístupem k databázi, členstvím, AJAX atd. Docela rychle.

Doufejme, že vám tento kurz dal nástroje, které potřebujete, abyste mohli začít vytvářet vlastní aplikace ASP.NET WebForms!