ASP.NET MVC 5 - Abrufen des aktuellen Ansichtsnamens (Razor .cshtml-Seite)

9

Ich bin ein Student und ziemlich neu in ASP.NET MVC und ich komme aus ASP.NET Web Form. (Verwendet dazu)

Ich habe eine Liste:

%Vor%

Mein Ziel: Nach welcher Ansicht gerendert wird, möchte ich "aktiv" zu dem hinzufügen, auf das geklickt wurde. Beispiel: Ich klicke auf "Kategorie", dann verliert Home seine aktive Klasse und Kategorie hat "aktiv" zu seiner Klasse hinzugefügt. (und die umgekehrte Sache mit "bg-hover-black" )

Ich dachte, ich könnte es tun, indem ich die tatsächlich wiedergegebene Ansicht überprüfe, aber ich weiß nicht, wie ich es machen soll. (Ich weiß nicht, wie ich die tatsächliche Ansicht überprüfen kann, aber mit Razor kann ich prüfen, ob die Bedingungen in Ordnung sind)

Ich habe es zuerst mit JavaScript versucht:     

%Vor%

Aber es funktioniert nicht, denn wenn die Seite geladen wird, wird der HTML-Code mit "aktiv" für den Home-Teil gerendert. (Wenn ich "aktiv" für Home entferne, dann ist nichts bei onClick aktiv, außer zwischen Klick und Laden der Seite).

Haben Sie eine Lösung? Ich habe viel im Internet gesucht, aber nichts gefunden, was mir helfen könnte.

Sorry für irgendwelche englischen Fehler, ich lerne es immer noch:).

Danke,

Hellcat8.

    
Hellcat8 01.07.2015, 08:40
quelle

3 Antworten

6

Da Sie die Konvention verwenden, bei der Ihre Seite nach dem Controller benannt ist, können Sie dies im Rasierer tun, um den Controller- / Seitennamen zu erhalten:

%Vor%

Dadurch wird Ihre aktive Klasse auf der Seite des Servers festgelegt, wodurch die Notwendigkeit entfällt, diese Client-Seite mit JavaScript auszuführen.

    
Anish Patel 01.07.2015, 09:09
quelle
2

Zur Bestätigung: Sie ändern die Seite, wenn der Benutzer auf das Element klickt.

Aus diesem Grund wird Ihr Javascript ausgeführt, aber dann wird die ganze Seite neu geschrieben und Sie befinden sich im ersten Zustand (dh mit aktivem Home, wie im Markup).

Um die aktuelle Seite zu überprüfen, können Sie location.href verwenden und sie mit der href-URL vergleichen, etwa wie folgt:

%Vor%

Alternativ, und das wäre robuster, könnten Sie ein Token (string, enum oder const) mit dem Viewmodel übergeben und überprüfen, dass zB:

%Vor%

dann

%Vor%

(oder nur im Markup ...)

%Vor%     
freedomn-m 01.07.2015 08:58
quelle
1

Hier ist mein Ansatz für ein kaskadiertes Bootstrap-Dropdown-Untermenü, das mit active classes in der _layout.cshtml-Datei eines Razor Pages-Projekts verziert ist.

Hauptelemente dieser Lösung:

  • Erhalten Sie die aktuelle Seitenroute von ViewContext.RouteData.Values["page"] .
  • Verwenden Sie Anchor-Tag-Helfer anstelle von @Url.Action() .

Code:

%Vor%     
Jpsy 23.03.2018 15:43
quelle

Tags und Links