2016-11-04 14 views
0

私はHTMLのメールテンプレートを作成しています。誰かがhtmlでプレースホルダを作るのはどうでしょうか?私は、特定の列に解析したい文字列の配列を持っています。しかし、私のコードから予期されるように、テキスト "row1"を1回だけ置き換えるので、最初の文字列項目だけを取得します。 どうすればhtmlのstring []プレースホルダを作成すれば、配列の各文字列に新しい行を追加するだけですか?だから "Row1"を何に置き換えるのですか?不特定多数の変数のプレースホルダをhtml/C#

htmlコード:

<table border="0" cellpadding="10" cellspacing="0" width="100%"> 
      <tr> 
       <td class="leftColumnContent"> 
        <p>Row1</p> 
       </td> 
      </tr> 

     </table> 

は、C#のメールコードIVEは試してみました:

 StreamReader myreaderhtml = new StreamReader("htmlemail.html"); 
     string[] lines = File.ReadAllLines("VUCresult.txt"); 
     string htmlmailbody = myreaderhtml.ReadToEnd(); 



     foreach (string s in lines) 
     { 

      htmlmailbody = htmlmailbody.Replace("Row2", namingConversion.GetADUserDisplayName(s)); 
     } 

     for (int i = 0; i < lines.Length; i++) 
     { 
      htmlmailbody = htmlmailbody.Replace("Row1", lines[i]); 
     } 
+0

私は持っていました。私のために働いたものは何もありません。配列全体を1行ずつ表示する方法を探しているだけです。 –

+0

EditorForでHTML属性を使用する: – Purushothaman

答えて

3

をあなたはテキストテンプレートエンジンと呼ばれています車輪の再発明しようとしています。この問題の解決方法はすでにたくさんありますが、それを自分で実装することはかなり手間がかかります。あなたは剃刀を見ることができます、Is it possible to use Razor View Engine outside asp.netを参照してください。

いずれにしても、ループをサポートするには、「すべての行でこれを繰り返す」というテンプレートのインジケータを作成する必要があります。

あなたはこのような何かがあることを行うことができます:

$repeat(myTableRow) 
<tr> 
    <td class="leftColumnContent"> 
     <p>$value1</p> 
    </td> 
    <td class="leftColumnContent"> 
     <p>$value2</p> 
    </td> 
</tr> 
$endrepeat(myTableRow) 

は、次に、あなたのコードでは、あなたが名前(「myTableRow」)によって、このブロックを見つける必要があり、かつ内部テキスト(<tr>...</tr>)を節約できます。

次に、各行の内部テキストのプレースホルダ($value1$value2)を置き換えて出力できます。

関連する問題