共用方式為


第 8 部分:最後的頁面、例外狀況處理和結論

作者 :Joe Stagner

Tailspin Spyworks 示範如何非常簡單,為 .NET 平臺建立功能強大的可調整應用程式。 它示範如何使用 ASP.NET 4 中的絕佳新功能來建置線上商店,包括購物、結帳和管理。

本教學課程系列詳細說明建置 Tailspin Spyworks 範例應用程式所採取的所有步驟。 第 8 部分會新增連絡人頁面、關於頁面和例外狀況處理。 這是數列的結果。

連絡人頁面 (從 ASP.NET) 傳送電子郵件

建立名為 ContactUs.aspx 的新頁面

使用設計工具,建立下列表單,並記下特殊注意事項,以包含 AjaxControlToolkit 中的 ToolkitScriptManager 和 Editor 控制項。 .

顯示新表單的螢幕擷取畫面。

按兩下 [提交] 按鈕,以在程式碼後置檔案中產生 click 事件處理常式,並實作方法以電子郵件傳送連絡人資訊。

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

此程式碼會要求您的web.config檔案包含組態區段中的專案,指定要用於傳送郵件的 SMTP 伺服器。

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

關於頁面

建立名為 AboutUs.aspx 的頁面,並新增您想要的內容。

全域例外狀況處理常式

最後,在整個應用程式中,我們已擲回例外狀況,而且有非預期的情況也會在我們的 Web 應用程式中造成未處理的例外狀況。

我們絕不會想要將未處理的例外狀況顯示給網站訪客。

顯示未處理的例外狀況的螢幕擷取畫面。

除了是令人難以處理的使用者體驗未處理的例外狀況之外,也可能是安全性問題。

為了解決此問題,我們將實作全域例外狀況處理常式。

若要這樣做,請開啟 Global.asax 檔案,並記下下列預先產生的事件處理常式。

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

新增程式碼以實作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);
 }

然後將名為 Error.aspx 的頁面新增至方案,並新增此標記程式碼片段。

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

現在,在Page_Load事件處理常式中,從要求物件擷取錯誤訊息。

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

結論

我們發現 ASP.NET WebForms 可讓您輕鬆地建立具有資料庫存取權、成員資格、AJAX 等複雜網站。 非常快速。

希望本教學課程提供您開始建置自己的 ASP.NET WebForms 應用程式所需的工具!