ABP 文本模板: 未定义的模板异常

ABP Text Template: Undefined Template Exception

提问人:Scott Severance 提问时间:7/7/2023 最后编辑:Scott Severance 更新时间:7/7/2023 访问量:77

问:

我正在尝试使用 ABP 文本模板创建电子邮件.ABP的示例代码(略有修改)有效:

using System;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.TextTemplating;

namespace TextTemplateDemo.Demos.Hello
{
    public class HelloDemo : ITransientDependency
    {
        private readonly ITemplateRenderer _templateRenderer;

        public HelloDemo(ITemplateRenderer templateRenderer)
        {
            _templateRenderer = templateRenderer;
        }

        public async Task RunAsync()
        {
            var model = new HelloModel
            {
                Name = "Test",
            };
            var result = await _templateRenderer.RenderAsync("Hello", model);

            Console.WriteLine(result);
        }
    }
}

我尝试包含我自己的代码,替换上述代码的相关行:

            var model = new DelegateEditorRequestViewModel
            {
                BaseUrl = "Test",
                ToName = "Test",
                EntityName = "Test",
                PrivateKey = "Test",
                Message = "Test",
                FromUnit = "Test",
                FromRole = "Test",
                FromName = "Test",
            };
            var result = await _templateRenderer.RenderAsync("DelegateEditorRequestView", model);

我在通话中遇到异常:消息“未定义的模板:DelegateEditorRequestView”。RenderAsync()Volo.Abp.AbpException

我在这里不知所措。

  1. 是否有文档可以解释我应该如何做到这一点?我所发现的只是一步一步,做这个,然后做那个。但由于没有解释,它几乎一文不值。那里没有任何东西可以用来理解我应该做什么,所以我只能盲目猜测,希望不小心绊倒解决方案。

  2. 第一个论点应该是什么?似乎没有任何这方面的文件。在此示例中,它是不带“model”的模型类名。但是我得到了这个例外,在没有其他解释的情况下,最合理的解释似乎是我使用了错误的名字。RenderAsync()

  3. 最后,我的代码有什么问题?

其他详细信息

  1. DelegateEditorRequest.cshtml与 位于同一位置。Hello.cshtml

  2. ConfigureServices()包括以下调用:

            Configure<AbpVirtualFileSystemOptions>(options =>
            {
                options.FileSets.AddEmbedded<TextTemplateDemoModule>("TextTemplateDemo");
            });
    

    没有提到 Hello 示例,所以我认为没有什么需要提到我的类。

C# 模板 ABP

评论


答:

0赞 Alex Gordon 7/7/2023 #1

确保模板文件位于正确的位置。它应该具有 .txt 或 .cshtml 扩展名。

ABP使用Configure方法注册模板文件.请确保在该方法或应用启动类中注册了模板,它应该如下所示

Configure<AbpVirtualFileSystemOptions>(options =>
{
    options.FileSets.AddEmbedded<YourApplicationModule>();
});

确保传递给 RenderAsync 方法的模板名称与实际的模板文件名匹配。模板名称应不带文件扩展名。

评论

0赞 Scott Severance 7/7/2023
感谢您的回复。 与示例模板位于同一目录中。演示项目中唯一的调用调用 。由于我没有触及它,而且 Hello 可以在没有被提及的情况下工作,我猜这不是问题。DelegateEditorRequest.cshtmlHello.cshtmlAddEmbeddedTextTemplateDemoModule