设置' cshtml'数据并返回一个字符串

时间:2015-11-01 14:28:29

标签: c# razor

我有一封确认电子邮件模板.cshtml,如下所示:

<html> 
    <head>
        <title>company name: Email Verification - Action Required</title> 
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head> 
    <body> 
            Thanks for signing up for company name!
            <br/>
            <br/>

            Thank you for signing up to company name. Please press the link below to confirm your email address <br/>
            If you did not sign up for company name, please ignore this email, and accept our apologies for the inconvenience.

            <br/>
            <br/>

            <a href="@Model.ConfirmLink">@Model.ConfirmLink</a>

            <br/>
            <br/>
            <br/>

            Thanks,<br/>
            The <a href="http://company name.com" >company name</a> Team                       
        </table>
    </body>
</html>

我是否有机制设置数据(@Model.ConfirmLink)并将结果作为string取回? (不是手动替换字符串)

2 个答案:

答案 0 :(得分:1)

您可以使用RazorEngine,它使用与Razor相同的语法,但是您可以在不需要ASP.NET MVC的情况下呈现文本。

您的代码如何运作:

string template = yourHtmlCodeAsString;
string result = Razor.Parse(template, new { ConfirmLink = "http://.../" });

您可以从文件,资源等加载该模板字符串

答案 1 :(得分:0)

是的,您可以将Razor用作电子邮件的模板引擎。

我使用这门课。

public static class EmailFactory
{
    public static string ParseTemplate<T>(T model, string templatesPath, EmailType emailType)
    {
        string templatePath = Path.Combine(templatesPath, string.Format("{0}.cshtml", emailType));
        string content = templatePath.ReadTemplateContent();

        return Razor.Parse(content, model);
    }
}
  • templatesPath - 是我的电子邮件cshtml视图的路径。
  • EmailType是枚举,其元素与templatesPath目录中的视图namse相同。

本质是Razor.Parse(content, model);它需要一个有效的剃刀视图和模型的字符串并将它们合并在一起。与ASP MVC中的视图相同。