Controller nach Bereichen aufgeteilt [duplizieren]

7

Ich habe die Frage - ist es möglich, das nächste zu tun?

Ich habe drei Bereiche:

%Vor%

In jedem Bereich habe ich einen ApiController mit dem gleichen Namen, aber natürlich in verschiedenen Namensräumen:

%Vor%

Ich habe auch einen Wert von current (den ich gerne benutzen möchte) Area in configuration.

Ich möchte den Benutzer dem Controller im richtigen Bereich zuordnen (den ich in der Konfiguration finden kann), wenn er in den Browser eingibt:

%Vor%

Wenn beispielsweise der aktuelle Bereich in der Konfigurationsdatei SiteOne ist, sollte diese Anfrage dem Controller MvcAppliaction.Areas.SiteOne.Controllers.ValuesController zugeordnet werden, aber wenn ich den aktuellen Bereich in der Konfigurationsdatei in SiteTwo of _Default ändere, sollte er zugeordnet werden richtigen Controller.

PS. Mit MVC Controller ist es einfach, Sie müssen nur Ihre Route einstellen:

%Vor%     
Malkov 23.03.2012, 08:29
quelle

3 Antworten

4

Mein Vorschlag wäre, eine benutzerdefinierte DefaultControllerFactory zu implementieren.

Sie können hier ein sehr gutes Beispiel hier

sehen

Die Standard-Controller-Fabrik listet alle Controller nur nach Namen in einer Liste auf, die diese Art von Funktionalität nicht zulässt. Der obige Artikel zeigt Ihnen, wie Sie eine neue Factory erstellen und die Kontrolle über die Controller-Erstellung übernehmen, damit Sie Routen zu bestimmten Namespaces problemlos zuordnen können.

Das würde die Funktionalität geben, nach der Sie suchen.

    
dmportella 24.03.2012, 16:21
quelle
12

Fügen Sie die folgende using-Anweisung hinzu und ändern Sie die Routenregistrierung in Ihrer AreaRegistration.cs-Datei.

%Vor%     
Kevin Ortman 24.03.2012 03:54
quelle
7

Ich habe einen Beitrag über die Implementierung des HttpControllerFactory zur Unterstützung von Bereichen

Und jetzt kann ich nur den Bereichsnamen in MapHttpRoute in der Datei Global.asax angeben:

%Vor%     
Malkov 26.03.2012 14:50
quelle