I have the code below on form so that the user submits the form and it sends and email. I have two response.write statements and I am wanting to change these so that a it writes these to a label (lblSubmit). Any help would be appreciated.
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
SmtpClient sc = new SmtpClient("smtp.talktalk.net");
StringBuilder sb = new StringBuilder();
MailMessage msg = null;
sb.Append("Email from: " + txtEmail.Text + "\n");
sb.Append("Message : " + txtQuestion.Text + "\n");
try
{
msg = new MailMessage(txtEmail.Text,
"myemail@talktalk.net", "Message from Web Site",
sb.ToString());
sc.Send(msg);
Response.Write("Message sent!");
}
catch (Exception ex)
{
// something bad happened
Response.Write("Something bad happened!");
}
finally
{
if (msg != null)
{
msg.Dispose();
}
}
}
}
</script>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<div id="title"><p>Contact Us...</p></div>
<div id="titletext"><p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.</p></div>
<div id="contactform">
<asp:Label ID="lblName" runat="server" Text="Name:"></asp:Label>
<asp:TextBox ID="txtName" runat="server" Width="189px"></asp:TextBox>
<br />
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server"
ControlToValidate="txtName" ErrorMessage="Please enter your name"
ForeColor="Red" Display="Dynamic"></asp:RequiredFieldValidator>
<br /><br />
<asp:Label ID="lblEmail" runat="server" Text="Email:"></asp:Label>
<asp:TextBox ID="txtEmail" runat="server" Width="189px"></asp:TextBox>
<br />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="txtEmail" Display="Dynamic" ErrorMessage="Please enter an email address"
ForeColor="Red"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ControlToValidate="txtEmail" ErrorMessage="Please enter a valid Email address"
ForeColor="Red"
ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"
Display="Dynamic"></asp:RegularExpressionValidator>
<br />
<br />
<asp:Label ID="lblPhone" runat="server" Text="Phone:"></asp:Label>
<asp:TextBox ID="txtPhone" runat="server" Width="189px"></asp:TextBox>
<br />
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server"
ControlToValidate="txtPhone"
ErrorMessage="Please enter a contact telephone number" ForeColor="Red"
Display="Dynamic"></asp:RequiredFieldValidator>
<br />
<asp:Label ID="lblQuestion" runat="server" Text="Question:"></asp:Label>
<asp:TextBox ID="txtQuestion" runat="server" Height="103px" TextMode="MultiLine"
Width="189px"></asp:TextBox>
<br />
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
ControlToValidate="txtQuestion" ErrorMessage="Please enter a message"
ForeColor="Red"></asp:RequiredFieldValidator>
<asp:Label ID="lblSubmit" runat="server"></asp:Label>
<asp:Button ID="cmdSubmit" runat="server" Text="Submit" CssClass="cmdSubmit"
onclick="cmdSubmit_Click" PostBackUrl="~/Contact Us.aspx" />
</div>
</asp:Content>
To set the text of a
Labelcontrol you’d just set a value in its.Textproperty. So instead of this:you’d have this:
This is vastly preferred over
Response.Writebecause the label control allows you to specify a location on the page as a placeholder.Response.Writejust blindly writes the string to the response, probably either appending it after the rest of the HTML or in some undefined place in the middle.Note that a
Labelcontrol wraps the text in aspanelement. If you want to output raw data over which you have complete markup control, consider using aLiteralcontrol.On a side note, a few words of advice for your code…
Look into the
usingstatement in C#. It handles thetry/finallyconstruct of anything that implementsIDisposable(anything on which you’d need to call.Dispose()) in a more elegant way. Essentially it saves you the need to write the disposal code yourself and results in cleaner and safer code in general.In your
catchstatement you’re currently completely ignoring the exception that you actually catch. Is this intentional? Or is fixing this part of your plan with this code? As a general rule, never throw away the exception data. It contains the actual error message of what happened (as opposed to “something bad happened”) as well as where it happened.