2012-04-05 10 views
1

私はフォーム上に以下のコードを書いているので、ユーザーがフォームを送信して送信し、電子メールを送ります。私は2つのresponse.writeステートメントを持っており、これらをラベル(lblSubmit)に書き込むように変更したいと考えています。どんな助けもありがとう。Response.Write to label

<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, 
        "[email protected]", "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> 
    &nbsp; 
    <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> 
    &nbsp; 
    <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> 
    &nbsp; 
    <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> 

答えて

7

ちょうどその.Textプロパティに値を設定したいLabelコントロールのテキストを設定します。あなたはこの必要があるだろう

Response.Write("some string"); 

:これに代えので

lblSomeLabel.Text = "some string"; 

をラベルコントロールを使用すると、プレースホルダとしてページ上の場所を指定することができますので、これはResponse.Write好ま大幅です。 Response.Writeは文字列をレスポンスに盲目的に書き出します。おそらくHTMLの残りの後に追加するか、途中で何か定義されていない場所に追加します。

Labelコントロールは、span要素のテキストをラップすることに注意してください。完全なマークアップコントロールを持つ生データを出力する場合は、Literalコントロールを使用することを検討してください。サイドノート、あなたのコードのためのアドバイスのいくつかの言葉で

...

は、C#でthe using statementに見て。これはtry/finallyIDisposable.Dispose()を呼び出す必要があるもの)を実装するもののすべての構造をより洗練された方法で処理します。基本的には、廃棄コードを自分で作成する必要がなくなり、一般的によりクリーンで安全なコードになります。

catchステートメントでは、現在は、実際にキャッチする例外を除いて、を完全に無視しています。これは意図的ですか?それともあなたの計画のこの部分をこのコードで修正していますか?一般的な規則として、は決して例外データを捨てます。実際にはのエラーメッセージ()が発生しています(「何か問題が発生しました」と表示されています)。となっています。が発生しました。

+0

ありがとうございます:) – user1300580

+0

こんにちは、catchステートメントは私が探しているもので、実際にエラーメッセージではなく、「何か悪いことが起こった」というメッセージを表示する方法についての助けに感謝します。ありがとうございます – user1300580

+0

@ user1300580:あなたがキャッチしている 'ex'オブジェクトを見てください:http://msdn.microsoft.com/en-us/library/system.exception.aspx '.Message'(エラーメッセージ)と' .StackTrace'(エラーが発生した場所)です。注目すべきは、値がアプリケーションのロジックに違反したときに、カスタム例外を作成してスローすることができることです。たとえば、 'int'引数を持つ関数があり、' int'が '> 0'であれば、' new ArgumentException( "値は正の整数でなければなりません。")と言うことができます。 – David

0

ASP.NETラベルコントロールを使用している場合は、そのプロパティのTextプロパティ値を設定できます。あなたもにrunat =「サーバー」プロパティで本部コントロールを使用し、コード

<div id="divMessage" runat="server" /> 
からその内部HTMLを設定することができ

<asp:Label ID="lblSubmit" runat="server" Text="Label"></asp:Label> 

とコードで、

lblSomeLabel.Text = "Email Sent"; 

およびコード内には、

divMessage.innerHTML="Email Sent!"; 
0

B labelname.text = "yourtext";を使用するエター

または上記のラベルのテキストプロパティ値。