Standardbereich festlegen - Vermeidung von ', neu {area=""}' auf jedem Link auf der Site

8

Dieser Code befindet sich in der Masterseite:

%Vor%

Alle Links funktionieren gut, bis ich zum Area Link gehe. Wenn ich dorthin gehe, funktionieren alle Routen des Hauptgebiets nicht.

Um das zu beheben, kann ich das verwenden:

%Vor%

Meine Frage ist, gibt es eine Möglichkeit, , new {area = ""} auf jedem -Link auf der Hauptseite zu vermeiden?

Es ist sehr ärgerlich, dies auf jedem Link auf der Seite zu haben.

    
Fitzchak Yitzchaki 16.02.2010, 05:29
quelle

2 Antworten

10

URL-Aktionen sind relativ zum Speicherort des Links. Also sagt new {area = ""} dem Aufruf von Url.Action nicht, dass es keinen Bereich gibt, sondern dass er den Wurzelbereich verwenden soll. Wenn Sie new {area = ""} aus dem Aufruf von Url.Action weglassen, wird versucht, eine URL für die angegebene Aktion innerhalb des angegebenen Controllers innerhalb des aktuellen Bereichs zu erstellen (die "Area" ist in Ihrem Fall).

Daher ist es unvermeidlich, wenn Sie von einem Teilbereich zum Wurzelbereich verknüpfen möchten.

    
Russell Giddings 16.02.2010, 18:19
quelle
3

Ich kenne mich immer noch nicht aus, wenn Sie die Standard-MVC-Methoden verwenden (abgesehen davon, dass Sie sie möglicherweise außer Kraft setzen, um Ihre eigene Version aufzurufen), aber wenn Sie die ActionLink<TController> oder andere generische Methoden verwenden MvcFutures lib dann kannst du.

Die MvcFutures-Methoden rufen ExpressionHelper.GetRouteValuesFromExpression() auf, das auf dem Controller nach einem ActionLinkAreaAttribute sucht, um den Bereich zu bestimmen. So können Sie Ihre Controller in Ihrem Hauptbereich wie folgt dekorieren:

%Vor%

Die Aktionsverknüpfungen sollten korrekt unter Verwendung der Standardsyntax generiert werden:

%Vor%     
Eric Amodio 08.03.2010 19:15
quelle