8

我有以下两个项目的解决方案 - MyNamespace.Services 和 MyNamespace.Web。

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

在服务项目中,我有一个 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

4 回答 4

2

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

于 2009-04-26T00:19:53.930 回答
2

您可以考虑只创建 HTML 帮助程序来呈现电子邮件并将其作为字符串返回。

它是部分视图还是返回带有 HTML 的字符串的方法并不重要。我实际上认为对于您的案例帮助方法将是一个更好的选择。

一个简单的辅助方法在您使用它的方式上也更加灵活。

于 2009-05-15T12:55:06.000 回答
1

您可以尝试创建自定义视图引擎定位器或虚拟路径提供程序。以下是一些可以帮助您入门的示例:

于 2009-04-26T00:37:20.143 回答
1

上面的所有链接都很好,这也可能有所帮助。你肯定能得到它来查找和使用视图。我遇到的问题是与他们合作,其他项目中没有代码完成等。通过摆弄项目文件也可以做到这一点,但老实说,我最终选择了上面的分组解决方案

ASP.NET MVC 的插件架构

于 2009-05-15T12:45:47.927 回答