Kann ich eine Asp 5 / MVC 6 View Component über Ajax neu laden?

8

Ich spiele mit MVC 6 herum und habe ein Raster von Nutzern, die momentan auf meiner Seite registriert sind. Oberhalb des Gitters habe ich eine View-Komponente für die Such- / Filterfunktionalität erstellt. Es wird über

aufgerufen %Vor%

Eine der Anforderungen besteht darin, die Werte der Dropdown-Listen speichern und erneut anwenden zu können, damit ein Endbenutzer schnell auf seine häufig verwendeten Suchen zugreifen kann. Ich habe ein Drop-down in der Ansichtskomponente aller gespeicherten Suchen hinzugefügt.

Sobald ein Benutzer eine Suche speichert, möchte ich die UserSearchBar View-Komponente neu laden, um die Dropdown-Liste zu aktualisieren.

Meine Fragen sind:

  1. Wie lade ich eine Ansichtskomponente über AJAX neu, nachdem eine Schaltfläche gedrückt wurde?
  2. Sollte ich in diesem Szenario aufgrund von Einschränkungen in den Ansichtskomponenten und beim erneuten Laden eine partielle anstelle einer Ansichtskomponente verwenden?

Ich könnte ein Partial innerhalb der View-Komponente für das Drop-Down verwenden. Oder fügen Sie der Dropdown-Liste programmgesteuert ein Element hinzu, aber ich hätte immer noch die gleiche Frage, wenn ich die Ansichtskomponente erneut lade, wenn ich auf eine Schaltfläche klicke, um eine der gespeicherten Suchen anzuwenden.

Lösung

Nachdem ich das Problem durchschaut habe, habe ich mir einen besseren (korrekteren?) Weg ausgedacht, der nicht das erneute Laden der View-Komponente erfordert. Führen Sie beim Speichern einen AJAX-Aufruf für die Suchmethode aus, und fügen Sie dem Dropdown-Menü ein Element hinzu. Suchen Sie bei der gespeicherten Suche einen Aufruf an eine Methode, die die gespeicherte Suche zurückgibt und sie anwendet.

Ich möchte jedoch immer noch wissen, ob es möglich ist (und wie), eine View Component in MVC 6 neu zu laden.

    
Joshua Engelbrecht 06.01.2016, 17:44
quelle

1 Antwort

9

Sie müssen lediglich eine Route in einem Controller einrichten, der die Ansichtskomponente zurückgibt. Zum Beispiel:

%Vor%

Sie können dann über AJAX eine GET-Anfrage an diesen Controller senden und die alte Ansichtskomponente durch das Ergebnis der Anfrage ersetzen.

Ob Sie eine Teil- oder eine Ansichtskomponente verwenden sollten, bleibt Ihnen überlassen, aber ich würde empfehlen, bei einer Ansichtskomponente zu bleiben, da Sie damit die relevante Logik für die Suchleiste in der Komponente selbst beibehalten können.

    
Ryan Helmoski 07.01.2016, 14:04
quelle