2009-04-25 5 views
7

У меня есть решение со следующими двумя проектами - MyNamespace.Services и MyNamespace.Web.Render View (или Partial) В другом проекте?

Веб-сайт содержит веб-приложение MVC.

В проекте «Сервис» у меня есть класс EmailService, который занимается доставкой сообщений электронной почты пользователю.

Я хочу использовать частичный или вид (ascx или aspx) для шаблонов электронной почты. Я нашел несколько решений о том, как визуализировать частичный вид и получить результат как строку, которая отлично работает, если шаблон находится внутри веб-проекта (поскольку он является контроллером в веб-проекте, который вызывает службу электронной почты).

(в 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/)

Но мои почтовые шаблоны расположены в проекте служб.

Как я могу отменить путь к шаблонам (частичный/просмотр) в моем проекте-сервисе из веб-проекта, который работает либо с LoadControl, либо с RenderPartial, который принимает виртуальный путь как параметр?

Кажется, что независимо от того, что я делаю, корневой каталог устанавливается в каталог веб-проектов.

Возможно ли это?

Было бы неплохо иметь возможность заставить его работать независимо от веб-проекта.

ответ

2

Я не думаю, что это возможно без разработки вашего собственного механизма просмотра. Механизм представления по умолчанию будет смотреть только в определенных местах для частичного представления - включая текущую папку просмотра и папку общих представлений. Я не думаю, что вы можете искать мнения за пределами текущего проекта, так как эти представления не зарегистрированы в движке просмотра.

1

Вы можете попробовать создать настраиваемый локатор движка просмотра или поставщик виртуального пути. Вот несколько примеров, которые могут помочь вам получить движение:

1

Все приведенные выше ссылки хороши, это может помочь, а также. вы наверняка сможете найти и использовать их. Проблема, с которой я столкнулся, заключалась в том, чтобы работать с ними, в других проектах не было завершения кода и т. Д. Это было полу можно получить, что, как хорошо возиться с файлом проекта, но если честно, я в конечном итоге происходит с решением Группирование выше

Plug in architecture for ASP.NET MVC

2

Вы можете рассмотреть только создавать свои HTML-хелперы для отображения сообщений электронной почты и верните его как строку.

Не имеет значения, является ли это частичным видом или методом, возвращающим строку с HTML. я действительно думаю, что для вашего случая вспомогательные методы были бы лучшим выбором.

Простой вспомогательный метод также более гибкий в способах его использования.