我正在尝试使用RazorGenerator作为电子邮件模板引擎。我想用数据建立一个模型,组装正确的部分视图集,并返回我可以通过电子邮件发送的 HTML。
编辑:除了这个工作流程之外,任何解决方案都需要可编辑为 .cshtml 文件,并且能够编译成 dll。由于各种原因,部署 cshtml 文件本身是不切实际的——如果我们不能将所有剃刀视图嵌入到单个文件中,那么我们就不能使用该建议。因此 RazorGenerator。
到目前为止,我已经完成了它的每个部分,除了部分。当我尝试在模板文件中使用 @Html.Partial() 时,我得到:The name 'Html' does not exist in the current context
.
基于这个答案,我知道@Html
默认情况下这不是 Razor 的一部分,并且有很多关于如何HtmlHelper
在控制器中创建 a 的答案。但是,我需要在模板中创建一个模板,该模板没有ControllerContext
我需要遵循这些示例的模板。
我也尝试过使用@Include,但 RazorGenerator 模板似乎不支持它。 编辑:我还尝试创建一个新类,它继承TemplateBase<>
并复制了 的所有功能RazorTemplateBase
,但我得到NullReferenceException
了 s 就@Include
行了。
所以,我的主要问题是:有没有更好的方法将另一个 Razor 文件(带模型)包含到我的文件中?
其次,如果没有更好的方法,我怎样才能创建 HtmlHelper?
编辑赏金:重申一下,我在可接受的答案中需要的四件事是:
- 使用标准编辑器编辑文件的能力
.cshtml
(没有“将其存储为字符串”等) - 将所有内容编译成单个 dll 的能力,该 dll 可以使用我们当前的构建系统进行部署(我们无法部署大量单独的 .cshtml)
- 从另一个引用一个 .cshtml 文件并传递模型的能力 - 等效于
@Includes
或@Html.Partial
(如果它们工作,它们中的任何一个都是完全可以接受的) - 通过电子邮件发送结果和附件的能力。(如果结果是字符串或可转换为字符串,我已经有这方面的代码。)
我目前可以得到其中三个工作的大多数组合,但我不能一次得到所有四个。我愿意接受新的库,替换 RazorGenerator,或者丢弃我已有的任何部分,只要结果按需要工作。