NVelocity 找不到模板

2024-01-15

我在 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)
...

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


你有没有考虑过使用CastleNVelocityTemplateEngine http://www.castleproject.org/castle/download.html?

从“TemplateEngine 组件 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();
}

Where:

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

我希望这对您有帮助!

只是补充一下,您当然希望将其放入返回字符串的静态方法中!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NVelocity 找不到模板 的相关文章

  • ASP.NET 5 中的全局异常处理

    如何将自己的日志记录逻辑附加到 ASP NET 5 应用程序以处理业务逻辑和较低层中引发的每个异常 我尝试用自己的ILoggerProvider实施和loggerfactory AddProvider new LoggerProvider
  • 代码中的.net Access Forms身份验证“超时”值

    我正在向我的应用程序添加注销过期警报 并希望从我的代码访问我的 web config 表单身份验证 超时 值 我有什么办法可以做到这一点吗 我认为您可以从 FormsAuthentication 静态类方法中读取它 这比直接读取 web c
  • 正则表达式仅允许特定数字

    我正在寻找一个只允许输入特定数字的正则表达式 例如2 4 5 6 10 18 我尝试过类似的东西 2 4 5 6 10 18 我输入的任何内容都无法通过正则表达式 然后计算机用手指着我并大笑 我哪里出错了 单引号是不必要的 您正在寻找的正则
  • 如何让 webpack 和 iis express 协同工作?

    I have Angular 2 和 Webpack 2 入门 https github com qdouble angular webpack2 starter它通过 webpack dev server 在节点上运行 我如何使用 web
  • 从 viewModel 在 Asp.net MVC 3 上实现 Dropdownlist

    我是 net 和 mvc 平台的新手 我有很多 int 字段来存储一些下拉列表值 由于数据库大小 我创建了 int 类型的字段 所以我通过这种方法实现 dropdownlist 它有效 但我不这样做不知道在视图模型上存储值文本是否是正确的解
  • 通过文件上传控件上传文件时重命名c#.net中的文件并将文件的更改名称保存在数据库中

    我有文件上传器 通过它浏览文件 并将浏览文件的名称存储在字符串变量中 现在我想用存储在另一个字符串变量中的另一个名称重命名这个uplaod文件名 string strRoleValue ddlrole SelectedValue strin
  • 如何分配Profile值?

    我不知道我缺少什么 但我在 Web config 文件中添加了 Profile 属性 但无法访问 Profile Item在代码中或创建一个新的配置文件 我今天也遇到了同样的问题 学到了很多东西 Visual Studio 中有两种项目 网
  • 共享 Owin Cookie 身份验证和基于旧版表单身份验证 cookie

    在我们公司 我们拥有大量使用 Asp net Web Forms 4 0 构建的应用程序 这些应用程序使用表单身份验证作为单点登录身份验证 配置如下
  • Kendo 刷新 (DropDownList.refresh()) 不起作用错误未定义

    我试图在另一个 DropDownList 更改后刷新下拉列表 但 Refresh 方法未定义错误正在升级 我尝试再次读取数据源 它显示它正在加载 但数据仍然相同 帮助解决这个问题请 Code DropDownList1 change fun
  • .NET ServiceModel.Syndicate - 更改 RSS 源的编码

    我正在尝试解决我在以下位置生成的所有 RSS 源的错误http captainobvio us http captainobvio us在 Internet Explorer 版本 8 和 9 中产生以下错误 进给代码错误 从当前切换 编码
  • 日期选择器无法与更新面板一起使用

    我的应用程序位于 asp net 3 5 中 其中我从更新面板内的日期选择器中选择日期 选择日期并单击提交按钮后 页面将被回发 发回后 当我再次尝试选择日期时 我看不到日期选择器 aspx页面上的代码
  • MVC4 - ContextDependentView - 是什么意思?

    我刚刚开始使用 MVC4 我看到的第一个操作方法有一些新内容 我查了一下互联网 找不到任何关于此的信息 public ActionResult LogOn return ContextDependentView 有谁知道 ContextDe
  • 更新面板异常处理

    当我在正在构建的 ASP NET Web 应用程序中实现的 UpdatePanel 中发生异常时 它们会导致页面上出现 JavaScript 错误 并在警报中提供一些高级错误输出 这对于开发来说还可以 但是一旦系统投入生产 由于多种原因 这
  • ASP.NET MVC2:“System.MissingMethodException:没有为此对象定义无参数构造函数。”

    我目前正在尝试修改默认 MVC 项目的注册组件 以适应我的项目 为此 我修改了 RegisterModel Register aspx 和 AccountController 我可以很好地查看寄存器视图 但是当我提交时 我在标题中收到错误
  • 无法成功启动或连接到 MSBuild.exe 子进程。验证 MSBuild.exe

    我第一次遇到这种情况 运行构建并收到此错误 当我重建其他sln一切正常 错误 1 由于内部故障 构建意外停止 Microsoft Build Exceptions BuildAbortedException 构建已取消 无法成功启动或连接到
  • 有没有办法让 ValidationSummary 与客户端验证器一起使用?

    NET ValidationSummary 控件聚合来自回发时触发的验证器的错误消息 有没有某种方法可以让它也显示来自客户端验证器的错误消息 我正在解决的问题是 在长页面上 可能会单击提交按钮 导致某些客户端验证器失败 但永远不会看到错误消
  • 在类库项目中使用资源.resx文件

    我在类库项目中使用了资源文件 resx 文件来存储一些错误消息 当我将 resx 文件的 构建操作 设置为 嵌入资源 并部署时 它工作正常 但我想将资源文件与dll分开 因为将来我可能需要更改resx文件中的错误消息 而无需重新编译类库项目
  • ASP.NET Web Api 的事件发布者

    我已经开始使用微服务 我需要创建一个事件发布机制 我计划使用 Amazon SQS 这个想法很简单 我将事件存储在与聚合相同的事务中的数据库中 如果用户更改他的电子邮件 事件UserChangedEmail将被存储在数据库中 我还有事件处理
  • EditorFor 的最小值和最大值

    我一直在尝试这段代码来设置我的最小值和最大值EditorFor
  • 为多语言 ASP.NET WebAPI 应用程序设置 CurrentCulture 的最佳位置

    基于这个问题 为多语言 ASP NET MVC Web 应用程序设置 CurrentCulture 的最佳位置 https stackoverflow com questions 8226514 best place to set curr

随机推荐

  • 删除Linux上的终端输出

    我正在编写一个命令行程序 它将有一个状态栏 很像 wget 我面临的主要问题是 如何删除已经发送到 stdout stderr 的内容 我有一个想法 使用退格字符 b 并删除我发送的输出 这是最好的方法吗 这是唯一的方法吗 有没有更好的办法
  • 在 Objective-c 中,如何创建一个可供所有子类访问但不能公开访问的方法

    假设我创建了一个 viewController 然后我想创建另一个类似于第一个视图控制器 看起来像是一份继承的工作 然而 原始ViewController的许多任务都是私有方法 我想最小化公共接口 如果我将这些方法声明为公开的话 那么就达不
  • 如何在 QML 中设计多层流体布局

    我在 QML 中设计了一个布局 以了解有关其功能的更多信息 并对设计此类布局的 最佳实践 有一些疑问 这里是 它本质上是一个列布局由三个组成行布局s 每一个都有一些长方形s 每行和矩形的大小应计算如下 First row Height 40
  • 何时使用以下瞬态、作用域和单例

    我读了一些关于此的文章 并且了解了如何使用 Transient Scoped 和 Singleton 但我很困惑何时使用其中之一 我的理解是 辛格尔顿 在需要存储员工数量的情况下 您可以创建单例 因为每次创建新员工时 它都会增加数量 因此在
  • 导入 _ssl 错误,DLL 加载失败,Python 37 Anaconda Windows 10

    我在 Win10 上遇到 ssl 问题 我已将 python 包和代码从 Windows 7 移至 Windows 10 一开始我面临以下问题 导入错误 缺少必需的依赖项 numpy 但这是通过重新安装 numpy 和 pandas 的 w
  • firebase 部署到自定义区域 (eu-central1)

    有没有办法指定将部署我的 firebase 函数的区域 区域 实际上我在文档中没有找到任何相关内容 并且我的函数总是部署到us central1但我想戴上它eu central1 是否可以在 Firebase 配置 文件中设置它 datab
  • 如何在 Meteor JS 中将数组值加载到模板变量?

    如何将数组值加载到 Meteor 中的模板变量 请查看下面的代码并建议我该怎么做 HTML 代码
  • 我应该将不带参数的 Perl 子例程称为 Marine() 或 Marine 吗?

    根据下面的示例代码 有两种调用子例程的方式 subname and subname C Perl bin perl exe use strict use warnings use 5 010 marine style 1 marine st
  • delphi 有没有办法通过名称实例化一个类?

    我想实例化一个类 但我只有字符串中的名称 有办法吗 这是来自 Delphi 帮助 Delphi 2006 但至少可以从 Delphi 7 获得 Syntax函数 GetClass const AClassName string TPersi
  • 正确地将 blazor 项目发布/部署到 github 页面

    首先我要说的是 我在这里的工作肯定比我的工资水平稍高一些 我将尽力描述这个问题并使其最容易回答 我在 Visual Studio 中创建了一个 Blazor 项目 并将其连接到 GitHub 存储库here https github com
  • 创建新的android项目时,出现错误“必须指定活动名称”

    当我尝试在如下所示的步骤中创建新的 Android 应用程序项目时 出现错误 必须指定活动名称 当我尝试创建新活动时也会发生同样的情况 我对分层父类有点困惑 它有什么用呢 为什么 Eclipse 不允许我在没有指定的情况下创建活动 这应该是
  • Visual Studio 的 Python 工具上的 Pytest

    可以在 Visual Studio 2010 上调试使用 pytest 库的 python 测试吗 我在解释器参数上添加了 m pytest 但未命中断点 我只能运行测试脚本而不对其进行调试 Pytest 建议创建一个独立的启动脚本 if
  • 将 Rust 应用程序与不在运行时链接器搜索路径中的动态库链接

    我有一个共享库 我想将其动态链接到几个单独的二进制 Cargo 应用程序 我使用以下命令将其位置包含在链接器中 L path to dir格式并且应用程序可以正确编译 并且我期望二进制大小显着减小 但是 当使用检查生成的二进制文件时ldd
  • 查找两个列表相同的从 1 开始的位置

    挑战在于编写一个函数来比较两个相当小的整数列表 每个列表大多少于 10 个元素 一个列表可能类似于 self 0 0 1 2 要与之比较的列表可能类似于以下示例之一 other1 other2 0 0 1 other3 0 0 1 2 0
  • 将输出写入打开 exe 的目录

    我有一个表格exe 现在单击按钮我希望它将文件保存到打开它的位置 例如如果我给这个exe给您 您将其复制到 C 盘文件夹名称 la la 然后将文件保存到 C 盘文件夹名称 la la 目前我正在尝试这个可行的方法 但我不希望它再提供目录路
  • 错误“框架不在模块中。”在 Xamarin.Forms - Android 项目中

    每当涉及到这一行时 就会出现以下错误 using var client new HttpClient var json await client GetStringAsync http mvalivros azurewebsites net
  • 使用 Docker 和 PHP 从 env 文件加载环境变量

    如何使用 Docker 文件中设置的 dotenv 变量传递给 Php 应用程序 最近尝试使用带有一组键配对值的 env 文件来跨不同的配置文件使用 但注意到 Docker Wordpress 映像并不容易设置 虽然在节点等中设置起来相当简
  • 如何判断PDF是横向还是纵向

    有没有工具可以确定 PDF 是横向还是纵向 我目前看过pdfbox and Itext为此 但似乎我找不到它 请告知他们是否支持这一点 使用提取 PDF 页面信息Origami提供的信息是 pdf 页面有一定程度的旋转 以下是 Origam
  • 在项目模板中包含对我自己的程序集的引用的最佳方法是什么?

    我们已经用 C 开发了一个库 现在我希望创建一个项目模板来帮助正确使用该库 我希望新项目包含对库程序集的引用 但不希望将程序集部署到 GAC 或者依赖于驻留在某个特定位置的程序集 我的想法是将 dll 包含在项目模板 zip 文件中 这意味
  • NVelocity 找不到模板

    我在 ASP NET MVC 应用程序中使用 NVelocity 时遇到一些困难 我用它作为生成电子邮件的一种方式 据我所知 我传递的详细信息都是正确的 但它无法加载模板 这是代码 private const string defaultT