Как использовать App.Resources в почтовом шаблоне - PullRequest
1 голос
/ 30 марта 2020

Я использую приложение форм 2sx c для отправки электронных писем, но мне нужно использовать 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", я получу ссылку на объект, не установленную для экземпляра объекта.

Есть ли способ реализовать это?

1 Ответ

1 голос
/ 07 апреля 2020

Таким образом, вы используете более старую версию Mobius - последняя версия (только на github, выпуск через несколько недель) использует CreateInstance для активации бритвы. Там будет проще.

НО в вашем случае, я думаю, что у переменной контекста есть все. Я думаю, что вы можете просто сделать context.App.Resources.InformedConsent;)

...