Wir folgen diesem offiziellen ASP.NET-Dokument: Managing Application State. In unserem one wir Controller setzen wir einen Wert für HttpContext.Items[...]
und versuchen, auf diesen Wert von einem ViewComponent zuzugreifen, der von der entsprechenden Ansicht aufgerufen wird. Aber wir bekommen HttpContext.Items[...]
als Null innerhalb ViewComponent
.Zugriff auf HttpContext.Items von ViewComponent gibt NULL zurück
Controller:
HttpContext.Items["TestVal"]= "some value";
Ausblick:
@await Component.InvokeAsync("myVC")
ViewComponent:
public class myVCViewComponent : ViewComponent
{
public async Task<IViewComponentResult> InvokeAsync()
{
String myVal= Http.Items["TestVal"].ToString(); //issue: Http.Items["TestVal"] is null at this line
return View(items);
}
}
UPDATE:
In Controller-Abschnitt oben geändert Http.Items
-HttpContext.Items
in der Linie an: HttpContext.Items["TestVal"]= "some value";
Ich habe meine ursprüngliche Antwort gelöscht, da ich falsch lag - Bitte finden Sie mein Update. –
Für Ihre Anfrage habe ich es nicht markiert. Und, ja, im Code habe ich 'HttpContext.Items' anstelle von' Http.Items'. Ich habe auch meinen Beitrag aktualisiert. – nam
Das Problem hängt mit dem zusammen, auf das Sie in Ihrer ursprünglichen Antwort hingewiesen haben: "Der Inhalt wird nach jeder Anfrage verworfen." Was ich tat war, dass ich ein linkes Navigationsmenü habe, das über eine andere ViewComponent über einen anderen Controller aufgefüllt wird. Wenn ein Benutzer auf einen Link im linken Menü klickt, ruft er eine andere Aktion in einem anderen Controller auf, der Informationen an seine View sendet, die wiederum eine andere ViewComponent aufrufen. Nachdem Sie mich auf die Zitate aus den referenzierten Dokumenten verwiesen haben, wurde mir klar, dass das Problem nicht mit ViewComponent zusammenhängt. es ist eher mit dem Umfang von HttpContext verbunden – nam