RazorGenerator,模板和@Html

Bob*_*son 6 c# template-engine asp.net-mvc-3 razorgenerator

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

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

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

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

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

其次,如果没有更好的方法,我怎样才能创建HtmlHelper?


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

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

我目前可以得到其中三种工作的大部分组合,但我不能同时获得所有四种.我愿意接受新的库,取代RazorGenerator,或抛弃我已经拥有的任何部分,只要结果能够按需要运行.

Dam*_*ake 1

只是一个想法,但为什么不能设置其他页面并在控制器代码中打开 HTTPWebRequest / WebClient 发送您需要的数据,从该视图中获取所有 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;
}
Run Code Online (Sandbox Code Playgroud)