2011-07-22 7 views
7

どのようにC#(別のサーバー側のコントロールを含む)でサーバー側の要素のinnerhtmlを取得できますか?
またはビジュアルスタジオ2010でメール本文をデザインするにはどうすればよいですか?
私は電子メールを送信するためのC#でいくつかのコードを持っています...(HTML本体をサポートしています)
私はhtml本体をハードコードするための方法を探しています!
ので、デザインモードでサーバー側のdivをした:どのようにC#(別のサーバー側のコントロールを内部に)とサーバー側要素のinnerhtmlを取得することができます

<div runat="server" id="MainDiv" style="direction: rtl; font: 12px tahoma,arial,sans-serif; width: 700px; 
     background-color: #f5f5ff; border: 2px solid #003366;"> 
     <div id="Header" style="width: 690px; background-color: #637eb0; height: 40px; margin: 5px auto; 
      position: relative;"> 
      <img src="Images/logo.png" alt="logo" title="soscharge" style="width: 200px; position: absolute; 
       top: 4px; left: 10px;" /> 
      <span style="color: #69fbfd; font: bold 13px tahoma,arial,sans-serif; position: absolute; 
       top: 11px; right: 10px;">hi ...</span> 
     </div> 
     <div id="Content" style="padding: 10px 10px;"> 
      <ul style="margin:0px;padding:0px 10px 10px 10px;"> 
       <li> 
       title1 : --- 
       </li> 
       <li> 
        title 2 : 
        <asp:Label ID="lblOredr_Id" runat="server" Text="---" ForeColor="Red"></asp:Label> 
       </li> 
      </ul> 
      <br /> 
      <p style="text-align: center;color:#fd00dc;"> 
       bla bla</p> 
     </div> 
    </div> 

が、私はこれのinnterHtmlは、コードの下で私の電子メール本文のDIV取得することはできません。

string s = MainDiv.InnerHtml.ToString(); 

ERROR:

内容が リテラルではないため、MainDivの内部コンテンツを取得できません。

MainDiv内にサーバーサイドテーブルがあります。このテーブルにいくつかのデータを動的に追加します。
この状況では、電子メール本文のHTMLを取得するために何ができますか?
ありがとうございます

答えて

18

divの内容はリテラル(内部にサーバーコントロールが含まれていない)でない限り、InnerHtmlを呼び出すことはできません。しかし、あなたはこのような何かをすることによって文字列にレンダリングするためにそれを強制することができます答えを

var sb = new StringBuilder(); 
mainDiv.RenderControl(new HtmlTextWriter(new StringWriter(sb))); 

string s = sb.ToString(); 
+0

感謝を... – MoonLight

+0

@Nathanピットマン:非常に良い答え..偉大な男... !!! – Soundar

+2

まだですか?どのようにそのコントロールの 'innerHTML'を取得するには? 'innerHTML'を得るために文字列内のテキストを取り除くことに反対して、それを行う方法はありますか? – Pierre

関連する問題