#

 

 

Wie kann ich den aktuellen Aufrufer einer Asp.Net Core MVC Seite direkt in der View ermitteln.

Wenn ich mich in der allgemeinen _Layout View befinde, und möchte den aktuellen Controller als Pfad in der Navigationbar einstellen, dann benötige ich die Information zur Laufzeit, welche Seite gelanden wurde und von welchem Controller, Action und ID die Webseite als View geladen wurde.

 

Lösung:

In der Asp-MVC View kann man den Aktuellen Controller auslesen mit

ViewContext.RouteData.Values["controller"]

 

 

Im Debugger in dem Breakpoint sieht man, dass der ViewContext -> RouteData zwei System.Collections zur Verfügung stellt.

In der System.Collection Values kann man die Liste per Key-Value Pair abfragen.

Für den Controller gibtr man ViewContext.RouteData.Value["controller"] ein und bkommt "Note"

 

Watch 1 Auszug in der Halteposition in der gezeigten View

-                   Values          {Microsoft.AspNetCore.Routing.RouteValueDictionary}       
+                  Comparer     {System.OrdinalIgnoreCaseComparer}            Count 2        int

-                   Keys   {string[2]}          System.Collections.Generic.ICollection<string> {string[]}

                    [0]      "controller"    string

                    [1]      "action"         string

-                   Values          {object[2]}          System.Collections.Generic.ICollection<object> {object[]}

                    [0]      "Note" object {string}

                    [1]      "Index"         object {string}

 

 

 

 

 

Beispiel

Navigationbar anpassen

Die Navigationbar in der standard Asp.Net Core MVC Anwendung ist wie hier aufgebaut.

Jetzt wäre es sinnvoll, diese so umzuwandeln, dass der aktuelle Controller Bereich als Aktiv markiert wäre

<a  asp-controller="Note" asp-action="Index" class="mynav_a_bg50">Notizen</a>

    <a href="#news" class="mynav_a_bg50">Groups</a>

    <a href="#news" class="mynav_a_bg50">Videos</a>

    <a href="#news" class="mynav_a_bg50">Kleinanzeigen</a>

    &nbsp;

 

Neuer Razor Code

@{

    string sController = ViewContext.RouteData.Values["controller"] as string;

}

 

<span style="color:red ">Controller=@sController</span>

@if (sController == "Note")

{

    <a asp-controller="Note" asp-action="Index" style="background-color:red">Notizen</a>

}

 

else

{

    <a asp-controller="Note" asp-action="Index" class="mynav_a_bg50">Notizen</a>

}

<a href="#news" class="mynav_a_bg50">Groups</a>

<a href="#news" class="mynav_a_bg50">Videos</a>

<a href="#news" class="mynav_a_bg50">Kleinanzeigen</a>

&nbsp;

<a href="#news">MyStuff <img src="~/images/Ico/icoSwitch_On.png" style="padding:0;margin:0px;" /></a>

 

 

 

Microsoft.AspNetCore.Routing.RouteValueDictionary

System.Collections.Generic.IEqualityComparer<string> {System.OrdinalIgnoreCaseComparer}

 

 

Mobile

.

0123movie.net