2017-05-05 51 views
0

Visual Studioで作成しているアプリケーションで小さな問題が発生しました。私はあなたがそれを送る前にプレビュー用の電子メールを表示するWebブラウザを持っています。プレビューウィンドウで電子メールの詳細を自動的に設定するために文字列置換を使用しようとしています。c#プレースホルダをtext.htmlに置き換えて置き換えます。

EmailTemplateConfigClassは私がHeaderFooterReplacementsを取得し、その上に(プレースホルダ/バリュー)のプロパティにアクセスするためのforeachを使用してい

public List<HeaderFooterReplacement> HeaderFooterReplacements { get; set; } 

を取得および設定するプロパティpublicリストを持っています。条件付きの場合(.Replace)を電子メールに同じテキストを検索プリセットHTMLメールテンプレートにプレースホルダと一致し、使用価値と交換するために使用

namespace EmailApp.Model 
{ 
    public class HeaderFooterReplacement 
    { 
     public string Placeholder { get; set; } 
     public string Value { get; set; } 
    } 
} 

private void PopulatePreview() 
    { 
     foreach (var HeaderFooterReplacement in EmailTemplateConfig) 
     { 
      if (headerFooterContents == HeaderFooterReplacement.Placeholder) 
      { 
       headerFooterContents.Replace("##HEADER_PHONENUMBER##", HeaderFooterReplacement.Value) 
          .Replace("##HTML_TITLE##", HeaderFooterReplacement.Value) 
          .Replace("##EMAIL_HEADING##", HeaderFooterReplacement.Value); 
      } 
     } 

     WebBrowser1.DocumentText = headerFooterContents; 
    } 

最後に、私は交換が完了した後のhtmlするWebブラウザのプレビューテキストを設定しています、何のコンソールエラーとすべてが存在しない、私はメールをプレビューしたときにそれはまだ表示さ除き、デバッグモードで正常に動作するように見えますプレースホルダーeg ## EMAIL_HEADING ##。

アイデア?また何かを明確にする必要がある場合は、尋ねるだけです。

おかげラインで

答えて

1

if (headerFooterContents == HeaderFooterReplacement.Placeholder) 

プレースホルダで、全体の内容を比較しています。また、Replaceが文字列を返し、元の文字列の値を置き換えない場合は、再度headerFooterContentsを割り当てる必要があります。 foreachループは次のようになります。

foreach (var HeaderFooterReplacement in EmailTemplateConfig) 
{ 
    if (headerFooterContents.Contains(HeaderFooterReplacement.Placeholder)) 
    { 
     headerFooterContents = headerFooterContents.Replace(HeaderFooterReplacement.Placeholder, HeaderFooterReplacement.Value); 
    } 
} 
関連する問題