Ich habe eine Ansicht, die aus oberen, linken und unteren Kopfzeilen und einem Hauptinhaltsbereich besteht. Angenommen, während einer AJAX-Anfrage muss ich den HTML-Code des oberen, unteren und Hauptfensters aktualisieren (der linke Header sollte gleich bleiben).ASP.NET MVC und AJAX
Ich fragte mich, was wäre der beste Weg, dies zu erreichen. Der erste Gedanke war, die Hauptinhaltsanzeige in eine Partialansicht zu stellen und eine Controlleraktion auszuführen, die PartialView zurückgibt. Dies würde nicht funktionieren, da die Aktion nur den HTML-Code des Hauptbereichs zurückgibt, kann ich die oberen und unteren Header nicht aktualisieren.
Also wenn ich die oberen und unteren Header in ihre eigenen jeweiligen Teilansichten setzen würde ich meine Controller-Aktion, um mehrere Teilansichten zurückzukehren. Ist das überhaupt möglich oder mache ich etwas völlig daneben?
Ich sah, dass es möglich ist, render a partial view to a string, so dass ich dachte, dass ich diese Technik in der Aktion verwenden konnte, um ein JSON-Objekt mit 3 Eigenschaften, die HTML der 3 Teiltafeln, die ich aktualisieren muss. Aber das fühlt sich, wenn überhaupt möglich, sehr falsch an.
Eine andere Idee, die ich hatte, war, ein JSON-Objekt zurückzugeben, das nur die Daten enthält, die für die Partials notwendig sind, und Javascript zu verwenden, um das HTML zu konstruieren. Aber das Erstellen einer Benutzeroberfläche in Javascript sieht wie ein schwieriger Job aus (Der Hauptinhalt verwendet MvcContribs GridView mit Blättern und Sortieren).
Also würde ich wirklich Vorschläge zu schätzen, was wäre der sauberste Ansatz, um ein solches Szenario zu behandeln. Auch eine adaptive Lösung wäre großartig: Wenn der Benutzer beispielsweise Javascript deaktiviert hat, würde er einfach die ganze Seite ohne AJAX neu laden.
UPDATE:
Andrew Siemersuggested jeden Abschnitt in seine eigene Teilansicht platzieren und mehr ajax Anfragen auszuführen. Dies scheint ein vollkommen gültiger Ansatz zu sein, aber leider ist er in meinem Szenario nicht anwendbar, weil ich in meiner ursprünglichen Problembeschreibung folgende Details übersehen habe: Der obere Header wird tatsächlich verwendet, um Fehler-/Informationsmeldungen von Ereignissen im Hauptfenster anzuzeigen. Zum Beispiel muss ich die Fehlermeldung anzeigen, falls beim Abrufen des Modells für das Hauptfenster eine Ausnahme ausgelöst wird. Daher konnte nur eine einzige Anfrage gestellt werden, um diese beiden Panels zu aktualisieren.
könnten Sie einen Blick auf dieses: http://stackoverflow.com/questions/7086440/mvc-validating-binded- to-entity-with-reference-to-other-entities pls (habe keine Ahnung, wie Sie direkt kontaktieren können) :) thnx – cpoDesign