Ich habe eine freigegebene Masterseite, die ich aus 2 verschiedenen Bereichen in meiner MVC 2-App verwende. Die Masterseite hat einen Aktionslink, der derzeit den Controller und die Aktion angibt, aber natürlich funktioniert der Link nicht, wenn ich mich im falschen Bereich befinde. Ich sehe keine Überlastung für Actionlink, der einen Bereichsparameter akzeptiert. Ist dies möglich?
156
Etwas, auf das ich unmittelbar danach gestoßen bin und auf das andere möglicherweise stoßen: Wenn Sie innerhalb eines Bereichs eine Verknüpfung zu einer Aktion herstellen müssen, die sich nicht in einem Bereich befindet, müssen Sie den Bereich weiterhin als leere Zeichenfolge angeben.
Ich habe beispielsweise MVC-Code in einen Bereich verschoben und festgestellt, dass ich URLs auf der Masterseite aktualisieren muss, die auf andere Seiten der Site verweisen.
Verwenden Sie, um eine URL für etwas anzugeben, das sich nicht in einem Bereich befindet
quelle
Verwenden:
Hinweis : Der vierte Parameter dient zum Übergeben der Route
Values
. Wenn Sie einen leeren Parameter übergeben, wird die Stammstruktur berücksichtigt. Wenn Sie einen geeigneten Wert übergeben, wird dieser als Bereich verwendet.Vergessen Sie auch nicht,
null
odernew{}
als 5. Parameter zu verwenden, da das Übergebennull
odernew {}
Erstellen eines Aktionslinks die Methode für nicht überlastet(text,action,controller,route data)
oder(text,action,controller,route data,html attribute)
die richtige Methode verwendetquelle
In MVC2 hat das Geben
area="root"
für mich wie folgt funktioniertquelle
Ein guter Trick, den Sie ausführen können, wenn Sie einen Bereich häufig in einer Ansicht verwenden, besteht darin, ihn oben als Variable zu definieren:
quelle
Folgendes habe ich mir als Lösung ausgedacht, damit ein Benutzer eine Verbindung zu den vorgefertigten Authentifizierungssystemen herstellen kann.
Jeder meiner Bereiche verfügt über eine Version der Datei _LoginPartial.cshtml.
Ich könnte wahrscheinlich die Anwendung dazu bringen, eine einzelne Version der Datei zu verwenden, aber ich bin immer wieder auf Fehler gestoßen, wenn ich versucht habe, einen einzelnen Anmeldeteil zu verwenden.
Es ist nur eine geringfügige Änderung des ursprünglich generierten Loginpartials, aber es scheint gut zu funktionieren, wenn es in bestimmten Bereichen verwendet wird.
Hier ist der Code, der in allen verwendet wird:
quelle
htmlAttributes:
funktionierte sehr gut für die Verwendung mehrerer Parameter.Wenn Sie keinen Standard-Webanwendungslink wie Info, Home, Contac usw. aus dem Bereich verwenden können. Sie ändern die Zeilen
von
Views \ Shared_Layout.cshtml
quelle
In meiner ASP Net Core-App füge ich den Bereich einfach wie folgt zu den HTML-Attributen hinzu:
quelle
Verwenden von
Wird erreichen, wonach Sie suchen.
Der DisplayText wird angezeigt (wie
<a href="#">DisplayText</a>
), der ActionName ist die Methode, die im Controller aufgerufen wird, und ControllerName ist offensichtlich der Controller, den Sie aufrufen möchten! Der nächste Parameter ist 'Routenwert', bei dem Sie Ihren Bereich hinzufügen würden. Wenn Sie sich derzeit in einem Bereich befinden undHome/Index
beispielsweise zu Ihrem Stammverzeichnis zurückkehren möchten, belassen Sie den Wert als leere Zeichenfolge, znew { area = ""}
. Der endgültige Wert ist 'HTML-Attribute' und wo Sie eine Klasse hinzufügen würden, wenn Sie möchten, und sollte ein sein,null
wenn Sie keine Attribute zum Hinzufügen haben. Da der letzte Parameter jedoch als "HTML-Attribute" angesehen wird; Damit Routenwerte erkannt werden, sollte dies der Fall seinnull
quelle