2009-05-12 13 views
5

Ich versuche, eine stark typisierte Ansicht mit Visual Studio 2008 zu erstellen. Ich kann mit der rechten Maustaste auf eine Controlleraktion klicken und Folgendes auswählen: Ansicht hinzufügen ... Im nächsten Dialogfeld gibt es eine Option 'Erstellen einer stark typisierten Ansicht ". Wenn ich diese Option ankreuze, kann ich eine Liste von Klassen auswählen, die sich in meinem aktuellen Projekt befinden.ASP.NET MVC - Wie erstellt man eine stark typisierte Ansicht von Klassen in referenzierten Klassenbibliotheken?

Allerdings kann ich nicht die Klasse auswählen, die ich brauche, die in einer Klassenbibliothek ist, die ich referenzierte.

  • Die Classlibrary ist eine stark typisierte Assembly, die in den GAC geladen wird.
  • Offensichtlich wird die Bibliothek im Projekt referenziert.
  • Ich habe ein < add namespace = "Namespace"/> in web.config
  • hinzugefügt Ich habe mehrmals umgebaut und neu gestartet VS
  • Classlibrary keine Probleme haben ...

Irgendwelche Vorschläge?

+0

Irgendeine Lösung? Bitte aktualisiere hier. –

Antwort

3

Erstellen Sie einfach Ihre Ansicht mit einer der Modellklassen, dann bearbeiten Sie ASPX manuell und ersetzen Sie die Modellklasse durch die gewünschte. Wahrscheinlich ist das Dialogfenster einfach nicht intelligent genug.

Aber nach meiner persönlichen Meinung ist die Verwendung von "Außen" -Klassen als Ihre Modelle sehr falsch.

Alle Modelle, Ansichten und Controller sollten hier direkt in Ihrem Projekt sein. Sie können dann intern verwenden, was immer sie benötigen, wo immer es ist.

+0

Ich stimme zu, dass ich keine externen Klassen verwenden sollte. Dies sollte jedoch funktionieren. Es handelt sich um eine schreibgeschützte Klassenbibliothek mit integrierten Sammlungen und Entitäten. Ich mag Ihren Vorschlag, manuell zu ersetzen, aber das funktioniert nicht, bekomme ich einen Kompilierungsfehler wahrscheinlich, weil die Vererbung durcheinander ist: 'Titel' ist kein Mitglied von 'ASP.views_home_list_aspx' – Ropstah

+0

Der Fehler, den ich erhalten habe, ist nicht verwandt meine Frage. Dein Vorschlag funktioniert. Vielen Dank! – Ropstah

0

Ich bin mir nicht sicher, ob meine eigenen Klassen in der Liste auftauchen oder nicht - ich gebe sie normalerweise einfach ein (beginnend mit dem Root-Namespace). Was passiert, wenn Sie beispielsweise in das Textfeld MyRootNamespace.MyClassLibrary.MyNamespace.AnotherNamespace.TheClass eingeben und auf OK klicken?

+0

Ich kann den Klassennamen einschließlich der Namespaces manuell eingeben. Die Dropdown-Liste mit dem Inhaltsinhalt ist dann jedoch deaktiviert ... – Ropstah

0

Ich kann manuell den Klassennamen einschließlich Namensräume geben, aber die Ansicht Inhalt Dropdown dann deaktiviert ist ... - ropstah 12. Mai um 13:31 Uhr

Ich habe das gleiche Problem mit meinen benutzerdefinierten Datenklassen. Sie werden in der Drop-down-Liste "Datenklasse anzeigen" angezeigt, die Dropdown-Liste "Inhalt anzeigen" ist jedoch deaktiviert. Ich vermute, dass meine Klassen eine Schnittstelle implementieren müssen. Ich bin mir nicht sicher, welcher.

+0

Sie können dies überprüfen: http://msdn.microsoft.com/en-us/library/aa697427(VS.80) .aspx. Ein sehr gutes ORM-Tool ist Entityspaces, www.entitypespaces.com – Ropstah

7

Dies ist sicherlich zu spät, diese Frage zu beantworten, aber für zukünftige Leser:

ich bemerkte, dass sehr oft i> saubere Lösung Build- und dann Build-> Wiederaufbau Lösung und die Klassen magisch erscheinen (wie sie sollen)

+0

Während ich nicht sicher bin, dass diese spezielle Antwort die gestellte Frage löst, löst es mein meist damit verbundenes Problem, also danke! – lassombra

+0

@lassombra Sie sind herzlich willkommen! –

1

Dies wurde vor langer Zeit geschrieben, aber meine Lösung könnte jemand helfen ....

ich das gleiche Problem nur hatte und ich fand, dass, wenn ich „Controller“ als Teil der Klasse habe Name - Ich hatte einen "DoorController" - ich konnte ihn nicht über die stark typisierte Ansichtsauswahl hinzufügen. Es verursachte mir auch andere Probleme in asp mvc.

Dies könnte auch für "Model" und "View" gelten? Versuchen Sie, den Klassennamen Ihres Modells zu ändern, um dieses Problem zu beheben.

Verwandte Themen