2009-04-10 6 views
0

Mein Projekt wurde durch eine Namensänderung ausgeführt, die dazu führte, dass ReSharper den Namen von Namespaces in der gesamten Lösung änderte. Alles wird problemlos kompiliert, aber meine ASP.NET MVC-Ansichten sehen keine vererbten Klassen mehr. Ich habe die Namespace-Importe in web.config und alles geändert, und ich bin mir sicher, dass die Klassen existieren. Sie funktionieren, wenn ich auf den vollständig qualifizierten Klassennamen (Name.Space.ClassName) verweise.ASP.NET MVC-Ansichten sehen keine Klassen nach massivem Refactoring

Warum passiert das und wie kann ich es beheben?

EDIT: Mehr Detail:

Vor Refactoring hatte ich benutzerdefinierte Ansicht Seite, Masterseite und Benutzersteuerklassen:

SalesWeb.Mvc.Views.SalesWebViewPage
SalesWeb.Mvc.Views .SalesWebMasterPage
SalesWeb.Mvc.Views.SalesWebUserControl

Nach Refactoring:

Wasabi.SalesPortal.Mvc.Views.SalesPortalViewPage
Wasabi.SalesPortal.Mvc.Views.SalesPortalMasterPage
Wasabi.SalesPortal.Mvc.Views.SalesPortalUserControl

In web.config, vor Refactoring:

<configuration> 
    <system.web> 
     ... 
     <pages ...> 
      ... 
      <namespaces> 
       ... 
       <add namespace="SalesWeb.Mvc.Views" /> 
      </namespaces> 
     </pages> 
    </system.web> 
</configuration> 

Nach:

<configuration> 
    <system.web> 
     ... 
     <pages ...> 
      ... 
      <namespaces> 
       ... 
       <add namespace="Wasabi.SalesPortal.Mvc.Views" /> 
      </namespaces> 
     </pages> 
    </system.web> 
</configuration> 

Ich habe auch das Inherits-Attribut für jede meiner Ansichten, Masterseiten und Benutzersteuerelemente geändert. Beim Versuch, die MVC-Anwendung zu besuchen, klagt es jedoch, dass SalesPortalMasterPage nicht gefunden werden kann, obwohl ich absolut sicher bin, dass es existiert, weil ich keine Probleme habe, wenn ich es als Wasabi.SalesPortal.Mvc.Views .VerkaufsportalMasterPage.

+0

@David Brown: Sie müssen mehr Details geben. Ohne den Zustand davor oder danach zu kennen, ist es unmöglich zu sagen. – casperOne

Antwort

1

Versuchen Sie, Ihr bin-Verzeichnis zu bereinigen und eine Neuerstellung durchzuführen.Manchmal verweilt eine ältere DLL im Ordner bin und vermasselt Ihre Referenzen/Namespacing.

0

Ich habe ähnliche Probleme, wenn der Namespace sich von dem Namespace unterscheidet, der die Ansicht enthält. Mein Problem ist, dass wenn ich eine stark typisierte Ansicht verwende, die auf eine Klasse verweist, die sich nicht im Namespace der Website befindet, sie nicht erkennt, wenn sie in der Ansicht selbst definiert ist. Meine Lösung besteht darin, für jede Sicht eine Codebehind-Datei zu erstellen und die Klasse dort zu definieren (so dass sie sich im selben Namespace befindet) und die Sicht von der Klasse codebehind zu erben. Ich weiß, das ist der alte Weg, es zu tun (und nicht empfohlen), aber es ist das einzige, was ich gefunden habe, das funktioniert. Ich stolperte darüber, weil Ansichten, die ich mit Versionen erstellt hatte, bevor der Codebehind nicht mehr standardmäßig erstellt wurde, immer noch funktionierten, während Ansichten, die ohne Codebehind erstellt wurden, nicht kompiliert werden konnten. Sie können dies versuchen, um zu sehen, ob es Ihr Problem löst.

Ich habe dieses Problem auf Codeplex, BTW gemeldet.

EDIT: Basierend auf Ihrem Kommentar sehen Sie möglicherweise nicht das gleiche Problem wie ich. Möglicherweise möchten Sie überprüfen, ob der Assemblyname (und der Standardnamespace) in Ihrem Projekt aktualisiert wurden. Möglicherweise besteht das Problem darin, dass der Assemblyname nicht mit Ihrem Namespace übereinstimmt.

+0

Es hat vorher gut funktioniert. Der einzige Teil, der geändert wurde, ist die erste Ebene des Namespace (SalesWeb -> Wasabi.SalesPortal). –

+0

Ich aktualisierte meine Antwort mit einer anderen Möglichkeit. – tvanfosson

Verwandte Themen