c# - RazorGenerator、模板和@Html

标签 c# asp.net-mvc-3 template-engine razorgenerator

我正在尝试使用 RazorGenerator作为电子邮件模板引擎。我想用数据建立模型,组装正确的部分 View 集,然后返回我可以通过电子邮件发送的 HTML。
编辑:除此工作流程外,任何解决方案都需要作为 .cshtml 文件进行编辑,并且能够编译成 dll。由于各种原因,部署 cshtml 文件本身是不切实际的——如果我们不能将所有 razor View 嵌入到一个文件中,那么我们就不能使用该建议。因此,RazorGenerator。

到目前为止,我已经完成了它的每个部分,除了部分部分。当我尝试在模板文件中使用 @Html.Partial() 时,我得到:The name 'Html' does not exist in the current context .

基于 this answer ,我知道 @Html默认情况下不是 Razor 的一部分,关于如何创建 HtmlHelper 有很多答案。在 Controller 中。但是,我需要在没有 ControllerContext 的模板中创建一个我需要遵循这些示例。

我也试过使用@Include,但 RazorGenerator 模板似乎不支持它。 编辑:我还尝试创建一个继承自 TemplateBase<> 的新类并复制了 RazorTemplateBase 的所有功能, 但我得到 NullReferenceException@Include 上行。

所以,我的主要问题是:是否有更好的方法将另一个 Razor 文件(带有模型)包含到我的文件中?

其次,如果没有更好的方法,如何创建HtmlHelper?


赏金编辑:重申一下,我需要在可接受的答案中做的四件事是:

  1. 编辑能力.cshtml使用标准编辑器的文件(没有“将其存储为字符串”等)
  2. 能够将所有内容编译成单个 dll,可以使用我们当前的构建系统进行部署(我们无法部署大量单独的 .cshtml)
  3. 从另一个文件引用一个 .cshtml 文件并传递模型的能力 - 相当于 @Includes@Html.Partial (如果它们有效,两者都是完全可以接受的)
  4. 能够通过电子邮件发送带有附件的结果。 (如果结果是字符串或可转换为字符串,我已经有了代码。)

我目前可以得到其中三个的大多数组合,但我不能同时得到所有四个。我对新库、替换 RazorGenerator 或丢弃我已有的任何部分持开放态度,只要结果按需要工作即可。

最佳答案

只是一个想法,但为什么你不能设置其他页面并在你的 Controller 代码中打开一个 HTTPWebRequest/WebClient 将你需要的数据发送到那里,从该 View 中获取所有 html/文本,将多个调用合并在一起然后通过电子邮件发送所有该字符串。

public ActionResult SomeAction() {
  // call other section logic using HttpWebRequest or WebClient
  // /controller/emailsection/{vars}/......
  // Get the string out of the request add it to ViewData["xxx"]
  // rinse and repeat for other sections

}

public ActionResult EmailSection() {
  //put section logic here

  Response.ContentType = "text/html"; // "text/plain"
  Response.Write("Some HttpWebResponse");
  return null;
}

关于c# - RazorGenerator、模板和@Html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13035427/

相关文章:

c# - 如何在 wcf restful 服务中传递多个参数?

c# - wpf 中的 slider 和单选按钮样式

java - 跨 Java 和 Javascript 模板语言?

c++ - 需要一个轻量级的 C++ 模板引擎

scala - 动态加载旋转模板

c# - 数据绑定(bind)到方法的输出

c# - 有没有办法让这个 "GetPropertyName"函数更快?

c# - JQuery 中的超链接

c# - 无法在 ASP.Net MVC 3 项目中使用 Entity Framework 保存更改

javascript - Cufon 无法使用日语文本