2009-07-13 14 views
1

Ich habe ein Klassenbibliotheksprojekt und MVC-Projekt in der einen Lösung.Zugriff Klassenbibliothek von MVC-Projekt?

Meine Klassenbibliothek hat die Namespace MyStuff.Classes

Mein MVC-Projekt der Namespace MyStuff.Web

habe ich nicht meine Klassenbibliothek aus dem MVC-Projekt oder umgekehrt direkt oder mit Zugang scheinen kann eine Gebrauchsanweisung ??

Wie ist der beste Weg, Namespaces in diesen Fällen zu verwenden? und allgemein? alle Hinweise Tipps willkommen.

Dank

Antwort

5

Sie müssen einen Verweis auf Ihre Klasse Projekt

Wenn Sie direkt auf Referenzen in Ihrem MVC-Projekt klicken hinzuzufügen drücken Sie die Projects Registerkarte leicht einen Verweis auf Ihre Klasse Projekt hinzuzufügen.

+0

Danke, also offensichtlich habe ich nie daran gedacht! –

2

Es hängt davon ab, wo Sie in Ihrem MVC-Projekt auf diese Klassenbibliothek zugreifen möchten. Zuerst müssen Sie einen Projektverweis zur Klassenbibliothek hinzufügen. Der Zugriff auf das Modell oder den Controller sollte trivial sein.

Um es in der Ansicht zu gelangen Sie Folgendes web.config hinzufügen müssen:

<pages> 
    <namespaces> 
    <add namespace="MyStuff.Classes"/> 
    </namespaces> 
</pages> 

Dann sind Sie stark Ihre Ansicht eingeben können:

<%@ Page Language="C#" 
     MasterPageFile="~/Views/Shared/Site.Master" 
     Inherits="System.Web.Mvc.ViewPage<MyStuff.Classes.MyClass>" %> 
0

In dem Szenario, das Wenn Sie in Ihrem MVC-Projekt bereits auf die Klassenbibliothek verwiesen haben, erhalten Sie möglicherweise einen Fehler wie folgt:

Kann keine Referenz zu proj hinzufügen ect wegen eines zirkulären Abhängigkeitsfehlers

Wenn Sie versuchen, das MVC-Projekt in der Klassenbibliothek zu referenzieren. Sie können dieses Projekt nicht als Referenz zu Ihrem Projekt hinzufügen. Die Gründe dafür werden hier erläutert: Cannot add reference to project because of a circular dependency error

Anstatt die Klasse zum Klassenbibliotheksprojekt hinzuzufügen, können Sie sie zum MVC-Projekt hinzufügen. Dann alles, was Sie tun müssen, ist hinzuzufügen:

using MyStuff.Classes; //Or the name of your class being referenced 

Sie jetzt die Klassen innerhalb Ihrer Klassenbibliothek verwenden.

Das war, was ich tun musste, um auf eine Klasse innerhalb meines Klassenbibliotheksprojekts zu verweisen, so dass ich den Datentyp "HttpPostedFileBase" verwenden konnte, weil ich "System.Web.Abstractions" in meiner Klassenbibliothek (it was not being referenced and I could not resolve it with this solution) nicht verwenden konnte).

Ich hoffe, dass dies hilft, wenn jemand in dieses seltsame Szenario läuft.

Verwandte Themen