Ich habe ein Kundensichtmodell, das Dropdown-Listen zur Auswahl von Land, Bereich und Sprache hat. Ich benutze ViewComponent, um die notwendigen Daten für die Dropdownlisten zu laden, und es funktioniert wie ein Charme. Mein Problem ist, dass wenn mehrere Client-Modelle auf der Seite sind, ich mehrere Aufrufe an die externe API mache, um die gleichen Daten zu erhalten. Ich habe versucht, den Component.InvokeAsync-Teil in einen Cache-Tag-Helper zu legen, aber er behält auch die Elemente, die beim ersten Aufruf benennt und die Modellbindung durcheinander bringt. Gibt es eine Möglichkeit, mehrere Anrufe für dieselben Daten zu vermeiden?Wiederholen von ViewComponent-Daten
Hier ist, wie der Code aussieht. Es ist nichts Besonderes. Die Ansichten binden nur die Eigenschaften und dort ist nichts Besonderes.
[ViewComponent(Name = "LocationSelector")]
public class LocationSelector : ViewComponent
{
private readonly ILocationService locationsService;
public LocationSelector(ILocationService locationService)
{
this.locationsService = locationService;
}
public async Task<IViewComponentResult> InvokeAsync()
{
var locationManager = new LocationSelectorViewModel();
locationManager.Areas = await this.locationsService.GetAreas();
locationManager.Countries = await this.locationsService.GetCountries();
return View("Default", locationManager);
}
}
Und die Komponente wird innerhalb des Kundenmodells so genannt. Das Problem ist, dass ich mehrere Kunden auf meiner Seite habe und sie alle Anfragen an den Service für genau die gleichen Daten stellen.
@await Component.InvokeAsync(nameof(LocationSelector))
http://sscce.org/ – Yoda