65.9K
CodeProject 正在变化。 阅读更多。
Home

AJAX + ASP.NET 2 + C# 联系我们页面,带进度指示器

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.42/5 (7投票s)

2007 年 9 月 7 日

CPOL

2分钟阅读

viewsIcon

52514

downloadIcon

1104

简单的 AJAX + ASP.NET 2 + C# 联系我们页面

引言

使用 ASP.NET 发送电子邮件本身没有什么特别之处。这涉及到任何联系我们网页,你填写所有必要字段并点击提交。然后它会以电子邮件的形式发送(有时也可能存储到数据库中)。在这里,我将创建一个简单的基于 AJAX 的联系我们网页。超过 50% 的网站使用传统方法来实现这一点,当用户点击提交按钮时,它会被重定向到另一个页面或页面会刷新。但实际上这非常不方便。

可以使用 AJAX UpdatePanel 控件很好地处理这个问题。只需创建一个联系我们网页,将你的内容拖放到 UpdatePanel 中即可。就完成了。好的,让我们尝试一下。

背景

你需要,

Microsoft Visual Studio 2005 Visual Web Developer

下载 AJAX 并安装

使用代码

你的 HTML 界面代码可能如下所示(根据你的需要进行设计)。我添加了一些 CSS 类。
<form id="form1" runat="server">

<asp:ScriptManager ID="ScriptManager1" runat="server" /> 

<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Panel id="Panel1" runat="server" Height="238px" Width="492px" 
    BackColor="#D9D1AD">
    <TABLE style="WIDTH: 474px; HEIGHT: 190px">
        <TBODY>
            <TR>
                <TD style="WIDTH: 187px; HEIGHT: 30px">
                    <asp:Label id="lblTo" runat="server" 
                        Text="To :" CssClass="DownText">
                    </asp:Label>
                </TD>
                <TD style="WIDTH: 118px; HEIGHT: 30px">
                    <asp:TextBox id="txtMailTo" runat="server" Height="20px" 
                        Width="219px" BackColor="White" CssClass="DownText" 
                        ReadOnly="True">email@yourdomain.com</asp:TextBox>
                </TD>
                <TD style="WIDTH: 143px; HEIGHT: 30px">
                    <asp:RequiredFieldValidator 
                        id="RequiredFieldValidator1" runat="server" 
                        ControlToValidate="txtMailTo" ErrorMessage="*">
                    </asp:RequiredFieldValidator>
                </TD>
            </TR>
            <TR>
                <TD style="WIDTH: 187px">
                    <asp:Label id="lblEmail" runat="server" 
                        Text="From : (Your Email)" CssClass="DownText">
                    </asp:Label>
                </TD>
                <TD style="WIDTH: 118px">
                    <asp:TextBox id="txtMailFrom" runat="server" 
                        Height="20px" Width="219px" BackColor="White" 
                        CssClass="DownText">
                    </asp:TextBox>
                </TD>
                <TD style="WIDTH: 143px">
                    <asp:RegularExpressionValidator 
                        id="RegularExpressionValidator1" runat="server" 
                        CssClass="redtext" ControlToValidate="txtMailFrom" 
                        ErrorMessage="*" 
                        ValidationExpression=
                        "\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">
                    </asp:RegularExpressionValidator>
                </TD>
            </TR>
            <TR>
                <TD style="WIDTH: 187px">
                    <asp:Label id="lblSubject" runat="server" 
                        Text="Subject :" CssClass="DownText">
                    </asp:Label>
                </TD>
                <TD style="WIDTH: 118px">
                    <asp:TextBox id="txtSubject" runat="server" Height="20px" 
                        Width="219px" BackColor="White" CssClass="DownText">
                    </asp:TextBox>
                </TD>
                <TD style="WIDTH: 143px">
                    <asp:RequiredFieldValidator id="RequiredFieldValidator3" 
                        runat="server" ControlToValidate="txtSubject" 
                        ErrorMessage="*">
                    </asp:RequiredFieldValidator>
                </TD>
            </TR>
            <TR>
                <TD style="WIDTH: 187px; HEIGHT: 64px">
                    <asp:Label id="lblMessage" runat="server" 
                        Text="Message :" CssClass="DownText">
                    </asp:Label>
                </TD>
                <TD style="WIDTH: 118px; HEIGHT: 64px">
                    <asp:TextBox id="txtMessage" runat="server" Height="54px" 
                        Width="219px" BackColor="White" CssClass="DownText" 
                        TextMode="MultiLine">
                    </asp:TextBox>
                </TD>
                <TD style="WIDTH: 143px; HEIGHT: 64px">
                    <asp:RequiredFieldValidator id="RequiredFieldValidator2" 
                        runat="server" ControlToValidate="txtMessage" 
                        ErrorMessage="*">
                    </asp:RequiredFieldValidator>
                </TD>
            </TR>
            <TR>
                <TD style="WIDTH: 187px">
                </TD>
                <TD style="WIDTH: 118px">
                </TD>
                <TD style="WIDTH: 143px">
                </TD>
            </TR>
            <TR>
                <TD style="WIDTH: 187px; HEIGHT: 61px">
                </TD>
                <TD style="WIDTH: 118px; HEIGHT: 61px">
                   <TABLE style="WIDTH: 162px; HEIGHT: 38px">
                       <TBODY>
                           <TR>
                               <TD style="WIDTH: 100px; HEIGHT: 34px">
                                   <asp:Button id="btnSubmit" 
                                       onclick="btnSubmit_Click" 
                                       runat="server" Text="Submit" 
                                       CssClass="DownText">
                                   </asp:Button>
                               </TD>
                               <TD style="WIDTH: 100px; HEIGHT: 34px">
                                   <asp:Button id="btnClear" 
                                       onclick="btnClear_Click" runat="server"
                                       Text="Clear" CssClass="DownText">
                                   </asp:Button>
                               </TD>
                               <TD style="WIDTH: 100px; HEIGHT: 34px">
                                   <asp:Image id="imgDisplay" runat="server" 
                                       Height="30px" Width="30px">
                                   </asp:Image>
                               </TD>
                           </TR>
                       </TBODY>
                   </TABLE>
                   <asp:UpdateProgress id="UpdateProgress1" runat="server">
                       <ProgressTemplate>
                           <div class="RedText">
                               <img src="Images/indicator.gif" />
                               Sending....
                           </div>
                       </ProgressTemplate>
                   </asp:UpdateProgress> 
               </TD>
               <TD style="WIDTH: 143px; HEIGHT: 61px">
               </TD>
           </TR>
       </TBODY>
   </TABLE>
</asp:Panel> 
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>

我添加了一个 ScriptManager 控件。一个网页只能添加一个 ScriptManger。

在 UpdatePanel 中创建你的设计(联系我们页面设计)

为了指示发送进度,在设计之外添加 UpdateProgress 控件

现在检查 .cs 文件(你的 C# 代码)

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net.Mail;


public partial class Contacts : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

imgDisplay.Visible = false;
}
protected void btnClear_Click(object sender, EventArgs e)
{
// Clear all the fields
txtMailTo.Text = "";
txtMailFrom.Text = "";
txtSubject.Text = "";
txtMessage.Text = "";
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
// No need to check whether or not all the fields are empty using
//script. Because already check using regular expressions

// I have used try catch block to send email to the destination

try
{
// Define new mailmessage
MailMessage mMailMessage = new MailMessage();

// assign from address
mMailMessage.From = new MailAddress(txtMailFrom.Text);

// assign to address
mMailMessage.To.Add(new MailAddress(txtMailTo.Text));

//set subject
mMailMessage.Subject = txtSubject.Text;

//set email body
mMailMessage.Body = txtMessage.Text;

// check email type HTML or NOT
mMailMessage.IsBodyHtml = false;

// define new SMTP mail client
SmtpClient mSmtpClient = new SmtpClient();

//send email using defined SMTP client
mSmtpClient.Send(mMailMessage);

// display result to sender
imgDisplay.Visible = true;
imgDisplay.ImageUrl = "images/done.jpg";

}
catch
{
// display ERROR message to sender
imgDisplay.Visible = true;
imgDisplay.ImageUrl = "images/error.jpg";

}

//To implement progress indicator I have used this. 
//If you are view this in internet this is optional
System.Threading.Thread.Sleep(2000);
}
} 

首先,你必须导入 using System.Net.Mail; 命名空间。然后定义一个新的 SMTP 电子邮件,并收集用户在你的网页中输入的所有信息。最后将所有信息以电子邮件的形式发送给收件人。没有页面重定向,页面没有刷新。它简单而强大。

//为了实现进度指示器,我使用了这个。如果你在互联网上查看此页面,这是可选的。如果你想检查进度指示器,请将以下行添加到你的网页


System.Threading.Thread.Sleep(2000);

最后,不要忘记配置你的 web.config 文件

<!--

Set configuration to send email using System.Net.Mail();

-->

<system.net>

<mailSettings>

<smtp from="RECIEPIENT-EMAIL-ADDRESS-GOES-HERE">

<network host="127.0.0.1" port="25" userName="" password=""/>

</smtp>

</mailSettings>

</system.net>

使用 127.0.0.1 作为网络主机(这是用于本地主机)

上传时,请记住更改网络主机

结论

在本文中,我们学习了如何创建启用 AJAX 的联系我们网页。

希望你喜欢这篇文章,祝你编码愉快

关于我

你好,我是 P.W.G.S.Poojanath,来自斯里兰卡。我对软件开发很感兴趣。

© . All rights reserved.