在另一个项目中渲染视图(或部分视图)?

8
我有两个项目:MyNamespace.Services和MyNamespace.Web,涉及IT技术。
Web是一个MVC Web应用程序。
在Service项目中,我有一个EmailService类,负责向用户发送电子邮件。
我想要使用部分视图或视图(ascx或aspx)作为电子邮件模板。我已经找到了几种解决方案,如何呈现部分视图并将结果作为字符串获取,如果模板位于Web项目中,则可以正常工作(因为它是Web项目中调用电子邮件服务的控制器)。
(我正在尝试使用的两种方法是http://developersisland.blogspot.com/2009/01/renderpartial-to-string-in-aspnet-mvc.html(博客底部)或http://www.brightmix.com/blog/how-to-renderpartial-to-string-in-asp-net-mvc/。
但我的电子邮件模板位于Services项目中。我该如何从Web项目内部引用模板(部分/视图),以便使用LoadControl或RenderPartial,这两者都需要虚拟路径作为参数?
无论我做什么,根目录似乎都设置为Web项目的目录。
是否可能?希望能够使其独立于Web项目而工作。
4个回答

2

我认为如果没有开发自己的视图引擎是不可能实现的。默认的视图引擎只会在某些位置查找部分视图,包括当前视图文件夹和共享视图文件夹。我认为你不能搜索当前项目之外的视图,因为这些视图没有在视图引擎中注册。


2
您可以考虑创建HTML helpers来渲染电子邮件并将其作为字符串返回。
无论是部分视图还是返回带有HTML的字符串的方法都没有关系,我认为对于您的情况,helper方法是更好的选择。
一个简单的helper方法在使用方面也更加灵活。

1

1
以上所有链接都很好,这也可能有所帮助。你肯定能够找到并使用视图。我的问题在于与它们一起工作时,在其他项目中没有代码完成等功能。通过调整项目文件也可以实现半自动化的解决方案,但老实说,我最终选择了上面提到的分组解决方案。 ASP.NET MVC插件架构

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接