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

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

问题描述:

我有以下两个项目的解决方案 - MyNamespace.Services和MyNamespace.Web。渲染视图(或部分)在另一个项目中?

Web包含一个MVC Web应用程序。

在Service项目中,我有一个EmailService类,负责发送电子邮件给用户。

我想为电子邮件模板使用部分或视图(ascx或aspx)。 我已经找到了若干解决方案,如何渲染局部视图并以字符串的形式获得结果,如果模板位于Web项目内部(因为它是调用电子邮件服务的Web项目中的控制器),它将正常工作。

(2种方法我试图使用或者是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/

但我的电子邮件模板位于服务项目。

如何从Web项目内部的服务项目中引用模板(部分/视图)的路径,该模板与LoadControl或RenderPartial一起使用,它们都将虚拟路径用作参数?

这似乎不管我做了什么根目录设置为Web项目目录。

可能吗?

很高兴能够以某种方式独立于Web项目工作。

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

您可以尝试创建自定义视图引擎定位器或虚拟路径提供程序。这里有几个例子,可以帮助您得到持续:

所有上面的链接都不错,这可能会有所帮助。你一定能够得到它来查找和使用视图。我遇到的问题是与他们合作,其他项目中没有代码完成等。这是半可能获取,以及通过与项目文件,但各地摆弄说实话,我结束了与分组解决方案会以上

Plug in architecture for ASP.NET MVC

你可以考虑刚创建HTML辅助渲染电子邮件和将其作为字符串返回。

无论是部分视图还是使用HTML返回字符串的方法都无关紧要。我实际上认为,对于你的情况帮手方法将是一个更好的选择。

简单的辅助方法在使用方法上也更加灵活。