2016-11-04 62 views
0

我在製作HTML郵件模板。有人會在html中做一個佔位符嗎?我有一個我想解析的字符串數組,在某個列中。但正如從我的代碼預期,它只替換文本「row1」一次,所以我只得到第一個字符串項目。 那麼我該如何在html中添加一個字符串[]佔位符來爲數組中的每個字符串添加一個新行?那麼用什麼來取代「Row1」呢?html/C中未指定數量變量的佔位符#

的HTML代碼:

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

     </table> 

的C#代碼的郵件我用盡:

 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

我有,我做到了。沒有任何工作適合我。所以只需要尋找一種逐行顯示整個數組的方法。 –

+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),然後輸出它。