2011-06-10 35 views
1

我是.NET新的文本转换,我尝试使用t4生成动态电子邮件正文。使用T4在VS2010中创建HTML电子邮件正文

所以,举个例子,我有一个例程,就是建立一个如下的字符串。我将如何将其转换为t4模板而不是StringBuilder字符串。它是一个运行时模板还是设计时模板?

private string BuildClosingContents(string legalBrand, string legalPhone, 
            string legalURL, string transText, string instructText, MyMail.Setting emailConfig) 
{ 
    StringBuilder sbHTML = new StringBuilder(); 
    sbHTML.AppendLine("<div id=\"closingText\">"); 
    if (emailConfig.Mode == "Q") 
    { 
     sbHTML.AppendLine("Please call me on " + legalPhone + " and we will arrange "); 
     sbHTML.AppendLine("everything for you. Please have your ticket details to hand "); 
     sbHTML.AppendLine("and your " + instructText + " will be required. In the meantime if you have any questions "); 
     sbHTML.AppendLine("please do not hesitate to call me."); 
     sbHTML.AppendLine("<br /><br />"); 
    } 
    else 
    { 
     sbHTML.AppendLine("If you have any queries relating to your quote " + transText + " please do not hesitate "); 
     sbHTML.AppendLine("to contact your conveyancer or me."); 
     sbHTML.AppendLine("<br /><br />"); 
    } 

    // Signature + branding 
    sbHTML.AppendLine("Yours sincerely"); 
    sbHTML.AppendLine("<br />"); 
    sbHTML.AppendLine("<img src=\"" + legalURL + "/images/agent_sign.jpg\" width=\"80\" height=\"74\" alt=\"\"><br />"); 
    //sbHTML.AppendLine(legalBrand + " Services<br />"); 
    sbHTML.AppendLine("</div>"); 

    // Return the closing content 
    return sbHTML.ToString(); 
} 

是什么把这些呈三角帮手文本之外,从应用程序的核心逻辑程序,并通过T4模板文件建立电子邮件身体flexiable HTML字符串的最佳方式 - 感谢

+0

你的问题是什么?我们很难为您创建T4模板。 – 2011-06-10 01:07:33

+0

感谢您花时间阅读本文。因为我是T4新手,如果有人能通过链接/文章或博客指向我的正确方向,那么某人已经做了类似的事情会有所帮助。 – 2011-06-10 09:20:20

回答

3

一个简单的例子是:

<#@ template language="C#" #> 
The first string is <#= this.FirstString #>. 
<# if (!string.IsNullOrEmpty(this.SecondString)) { #>The second string is <#= this.SecondString #>.<# } #> 
<#+ 

public string FirstString { get; set; } 
public string SecondString { get; set; } 

#> 

假设该文件名为MyTemplate.tt,那么它可以使用,如:

var template = new MyTemplate() { 
    FirstString = "Test" 
}; 

var text = template.TransformText(); 

一个很好的教程可以找到here

+0

我倾向于使用<#@ parameter#>指令来指定参数,例如 <#@ parameter name ='legalBrand'type ='System.String'#> – GarethJ 2011-06-16 06:13:02

+0

Thanks Gareth - 您可以将强类型类传递给运行时模板吗? – 2011-06-17 11:35:55

0

为此,您将使用运行时(或预处理)模板,因为这是可以合并到您的应用程序中的唯一类型。相比之下,设计时在Visual Studio中执行。

相关问题