2009-04-25 11 views
7

Ich habe eine Lösung mit den folgenden zwei Projekten - MyNamespace.Services und MyNamespace.Web.Ansicht rendern (oder teilweise) In einem anderen Projekt?

Web enthält eine MVC-Webanwendung.

Im Service-Projekt habe ich eine EmailService-Klasse, die sich um das Versenden von E-Mails an den Benutzer kümmert.

Ich möchte entweder eine teilweise oder eine Ansicht (Ascx oder Aspx) für E-Mail-Vorlagen verwenden. Ich habe mehrere Lösungen gefunden, wie man eine partielle Ansicht rendert und das Ergebnis als eine Zeichenfolge erhält, die gut funktioniert, wenn sich die Vorlage innerhalb des Webprojekts befindet (da es ein Controller im Webprojekt ist, der den E-Mail-Dienst aufruft).

(die 2 Methoden i zu verwenden, versuchen entweder http://developersisland.blogspot.com/2009/01/renderpartial-to-string-in-aspnet-mvc.html (am unteren Rande des Blogs) oder http://www.brightmix.com/blog/how-to-renderpartial-to-string-in-asp-net-mvc/)

Aber meine E-Mail-Vorlagen werden in dem Services-Projekt befindet.

Wie kann ich den Pfad zu den Templates (Partial/View) in meinem Service-Projekt innerhalb des Webprojekts referenzieren, das entweder mit LoadControl oder RenderPartial arbeitet, die beide einen virtuellen Pfad als Parameter verwenden?

Es scheint wie egal, was ich tun, das Stammverzeichnis ist auf das Web-Projekte-Verzeichnis festgelegt.

Ist es möglich?

Wäre nett, in der Lage zu sein, es irgendwie unabhängig vom Webprojekt arbeiten zu lassen.

Antwort

2

Ich glaube nicht, dass dies ohne die Entwicklung einer eigenen View Engine möglich ist. Die Standard-Ansichts-Engine sucht nur nach bestimmten Positionen für die Teilansicht - einschließlich des aktuellen Ansichtsordners und des freigegebenen Ansichtsordners. Ich glaube nicht, dass Sie nach Ansichten außerhalb des aktuellen Projekts suchen können, da diese Ansichten nicht in der View-Engine registriert sind.

1

Alle Links oben gut sind, könnte dies auch helfen. Sie werden sicherlich in der Lage sein, die Ansichten zu finden und zu nutzen. Das Problem, das ich hatte, war in der Arbeit mit ihnen, es gab keine Codevervollständigung usw. in den anderen Projekten. Es war halb möglich, dass auch zu erhalten, indem sondern um mit der Projektdatei Hantieren um ehrlich zu sein ich mit der Gruppierung Lösung oben

Plug in architecture for ASP.NET MVC

2

Sie können einfach gehen schließlich betrachten Sie Ihre HTML-Helfer Erstellen von E-Mails zu machen und gib es als String zurück.

Es spielt keine Rolle, ob es sich um eine Teilansicht oder eine Methode handelt, die eine Zeichenfolge mit HTML zurückgibt. Ich denke wirklich, dass für Ihren Fall Helfer Methoden eine bessere Wahl wären.

Eine einfache Hilfsmethode ist auch flexibler in der Art, wie Sie es verwenden können.