第 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 應用程式所需的工具!