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?
编辑赏金:重申一下,在可接受的答案中我需要的四件事是:
.cshtml
使用标准编辑器编辑文件的能力(不"将其存储为字符串"等)@Includes
或@Html.Partial
(如果它们工作,它们中的任何一个都是完全可以接受的)我目前可以得到其中三种工作的大部分组合,但我不能同时获得所有四种.我愿意接受新的库,取代RazorGenerator,或抛弃我已经拥有的任何部分,只要结果能够按需要运行.
只是一个想法,但为什么不能设置其他页面并在控制器代码中打开 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)
归档时间: |
|
查看次数: |
4156 次 |
最近记录: |