如何在邮件模板中使用 App.Resources

How to use App.Resources in a mail template

我正在使用 2sxc 表单应用程序发送电子邮件,但我需要在邮件模板中使用 App.Resoures。

我用这个:

var templateMailEngine = TemplateInstance("mailtemplate.cshtml");
var templateBody = templateMailEngine.Message(contactFormRequest, this).ToString();

private dynamic TemplateInstance(string fileName)
{
    var compiledType = BuildManager.GetCompiledType(System.IO.Path.Combine("~", App.Path, fileName));
    object objectValue = null;
    if (compiledType != null)
    {
        objectValue = RuntimeHelpers.GetObjectValue(Activator.CreateInstance(compiledType));
        return ((dynamic)objectValue);
    }
    throw new Exception("Error while creating mail template instance.");
}

和模板:

@helper Message(Dictionary<string,string> request, ToSic.SexyContent.IAppAndDataHelpers context)
{
    <!doctype html>
    <html>
    <head>
        <meta name="viewport" content="width=device-width">
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style type="text/css">
            body { font-family: Helvetica, sans-serif; }
        </style>
    </head>
    <body>
        <h1>@App.Resources.InformedConsent</h1>
    </body>
</html>
}

只要我输入“@App.Resources.InformedConsent”,我就会得到一个 "Object reference not set to an instance of an object."

有没有办法实现这个?

所以您使用的是旧版本的 Mobius - 最新版本(仅在 github,将在接下来的几周内发布)使用 CreateInstance 来激活剃须刀。那里会更容易。

但在你的情况下,我认为上下文变量包含了一切。我想你可以 context.App.Resources.InformedConsent ;)