gpt4 book ai didi

asp.net - NVelocity 找不到模板

转载 作者:行者123 更新时间:2023-12-02 16:31:48 26 4
gpt4 key购买 nike

我在 ASP.NET MVC 应用程序中使用 NVelocity 时遇到一些困难。我用它作为生成电子邮件的一种方式。

据我所知,我传递的详细信息都是正确的,但无法加载模板。

这是代码:

private const string defaultTemplatePath = "Views\\EmailTemplates\\";

...

velocityEngine = new VelocityEngine();
basePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, defaultTemplatePath);
ExtendedProperties properties = new ExtendedProperties();
properties.Add(RuntimeConstants.RESOURCE_LOADER, "file");
properties.Add(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, basePath);
velocityEngine.Init(properties);

basePath 是正确的目录,我已将该值粘贴到资源管理器中以确保它是正确的。

if (!velocityEngine.TemplateExists(name))
throw new InvalidOperationException(string.Format("Could not find a template named '{0}'", name));


Template result = velocityEngine.GetTemplate(name);

上面的'name'是上面定义为basePath的文件夹中的有效文件名。但是,TemplateExists 返回 false。如果我注释掉该条件并让它在 GetTemplate 方法调用上失败,堆栈跟踪将如下所示:

   at NVelocity.Runtime.Resource.ResourceManagerImpl.LoadResource(String resourceName, ResourceType resourceType, String encoding)
at NVelocity.Runtime.Resource.ResourceManagerImpl.GetResource(String resourceName, ResourceType resourceType, String encoding)
at NVelocity.Runtime.RuntimeInstance.GetTemplate(String name, String encoding)
at NVelocity.Runtime.RuntimeInstance.GetTemplate(String name)
at NVelocity.App.VelocityEngine.GetTemplate(String name)
...

我现在有点陷入僵局。我觉得答案是显而易见的,但我现在似乎看不到它。

最佳答案

您是否考虑过使用 CaSTLe 的 NVelocityTemplateEngine

从“TemplateEngine Component 1.1 - 2009 年 9 月 29 日”部分下载并引用以下程序集:

using Castle.Components.Common.TemplateEngine.NVelocityTemplateEngine;
using Castle.Components.Common.TemplateEngine;

然后你可以简单地调用:

using (var writer = new StringWriter())
{
_templateEngine.Process(data, string.Empty, writer, _templateContents);
return writer.ToString();
}

地点:

  • _templateEngine 是您的 NVelocityTemplateEngine
  • data 是您的信息词典(我使用词典来使我能够通过模板中的键 ($objectKeyName) 访问对象。
  • _templateContents 是实际的模板字符串本身。

希望对您有帮助!

只是补充一下,您需要将其放入一个返回字符串的静态方法中!

关于asp.net - NVelocity 找不到模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1940126/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com