RazorGenerator、模板和@Html我正在尝试使用RazorGenerator作为电子邮件模板引擎。我想采用数据模型,组装正确的部分视图集,并返回我可以通过电子邮件发送的HTML。编辑:除此工作流程外,任何解决方案都需要编辑为.cshtml文件并能够将其编译为DLL。由于各种原因,部署cshtml文件本身是不切实际的——如果我们不能将所有razor视图嵌入到一个文件中,那么我们就不能使用该建议。因此RazorGenerator。到目前为止,我已经解决了除该部分之外的所有部分。当我尝试在模板文件中使用@Html.Partial()时,我得到:Thename'Html'doesnotexistinthecurrentcontext。基于这个答案,我知道@Html默认情况下不是Razor的一部分,关于如何在控制器中创建HtmlHelper有很多答案。但是,我需要在没有ControllerContext的模板中创建一个模板,我需要遵循这些示例。我也尝试过使用@Include,但RazorGenerator模板似乎不支持它。编辑:我还尝试创建一个新类,它继承自TemplateBase并从RazorTemplateBase复制所有功能,但我在@Include行上得到NullReferenceException。所以,我的主要问题是:是否有更好的方法将另一个Razor文件(带有模型)包含到我的文件中?其次,如果没有更好的方法,我该如何创建HtmlHelper?编辑赏金:重申一下,我在接受的答案中需要的四件事是:能够使用标准编辑器编辑.cshtml文件(没有“将其存储为字符串”等)能够将所有内容编译成单个dll,可以使用我们当前的构建系统进行部署(我们不能部署很多单独的.cshtml)可以从另一个引用一个.cshtml文件,并传递一个模型-相当于@Includes或@Html.Partial(如果它们有效,其中任何一个完全可以接受)能够通过电子邮件发送带有附件的结果。(如果结果是一个字符串或可以转换为一个字符串,我已经有了这段代码。)我目前可以得到这些组合中的大部分,但我不能同时得到所有四个。我愿意接受新的库,替换RazorGenerator,或者放弃我拥有的任何部分,只要结果符合预期即可。只是一个想法,但为什么你不能设置其他页面并在你的控制器代码中打开一个HTTPWebRequest/WebClient发送你需要的数据,从该视图中获取所有的html/文本,组合几个调用然后发送所有的电子邮件字符串。publicActionResultSomeAction(){//使用HttpWebRequest或WebClient调用其他部分逻辑///controller/emailsection/{vars}/......//从请求中获取字符串并将其添加到ViewData["xxx"]//冲洗并重复其他部分}publicActionResultEmailSection(){//将部分逻辑放在这里Response.ContentType="text/html";//"text/plain"Response.Write("SomeHttpWebResponse");返回空值;}这是你想要的吗?RenderViewtoStringHowToUseEmailScreeninASP.Net/MVChttp://www.brightmix.com/blog/how-to-renderpartial-to-string-in-asp-net-mvc/以上为C#学习教程:RazorGenerator、模板以及@Html分享的所有内容,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
