Render View (или Partial) В другом проекте? - PullRequest
8 голосов
/ 26 апреля 2009

У меня есть решение со следующими двумя проектами - MyNamespace.Services и MyNamespace.Web.

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

В проекте Service у меня есть класс 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/)

Но мои шаблоны электронной почты находятся в проекте Services.

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

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

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

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

Ответы [ 4 ]

2 голосов
/ 15 мая 2009

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

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

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

2 голосов
/ 26 апреля 2009

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

1 голос
/ 15 мая 2009

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

Подключаемая архитектура для ASP.NET MVC

1 голос
/ 26 апреля 2009

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

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