Mam widok, który składa się z nagłówków górnego, lewego i dolnego oraz głównego panelu zawartości. Załóżmy, że podczas żądania AJAX muszę zaktualizować kod HTML górnego, dolnego i głównego panelu (lewy nagłówek powinien pozostać taki sam).ASP.NET MVC i AJAX
Zastanawiam się, jaki byłby najlepszy sposób, aby to osiągnąć. Pierwsza myśl polegała na tym, aby panel główny był częściowy i miał działanie kontrolera, które zwróciłoby PartialView. Nie zadziałałoby to, ponieważ ponieważ akcja zwraca tylko HTML głównego panelu, nie mogę zaktualizować nagłówków górnego i dolnego.
Więc jeśli umieściłem nagłówek górny i dolny w ich odpowiednich widokach częściowych, potrzebuję działania kontrolera, aby zwrócić wiele widoków częściowych. Czy to w ogóle możliwe, czy robię coś zupełnie poza torem?
Zobaczyłem, że jest możliwe render a partial view to a string, więc pomyślałem, że mogę użyć tej techniki w akcji, aby zwrócić obiekt JSON z 3 właściwościami reprezentującymi HTML 3 części, które muszę zaktualizować. Ale wydaje mi się, że to bardzo złe podejście do mnie, jeśli to możliwe.
Innym pomysłem było zwrócenie obiektu JSON zawierającego tylko dane niezbędne dla części i użycie javascript do skonstruowania HTML. Ale budowanie interfejsu użytkownika w javascriptu wygląda jak trudna praca (główna treść częściowo korzysta z MvcContrib's GridView z stronicowaniem i sortowaniem).
Tak więc naprawdę doceniłbym sugestie dotyczące najczystszego podejścia do obsługi takiego scenariusza. Również adaptacyjne rozwiązanie byłoby świetne: na przykład, jeśli użytkownik ma wyłączony javascript , po prostu przeładuje całą stronę bez AJAX.
UPDATE:
Andrew Siemersuggested umieszczenie każdej sekcji do własnej częściowym i wykonać wiele żądań AJAX. Wydaje się, że jest to całkowicie poprawne podejście, ale niestety nie ma ono zastosowania w moim scenariuszu ze względu na następujące szczegóły, które pominąłem w moim początkowym opisie problemu: górny nagłówek jest rzeczywiście używany do wyświetlania komunikatów o błędach/informacjach o zdarzeniach występujących w głównym panelu. Tak na przykład muszę wyświetlić komunikat o błędzie na wypadek, gdyby wyjątek został zgłoszony podczas pobierania modelu dla głównego panelu. Tak więc można było wykonać tylko jedno żądanie w celu zaktualizowania tych dwóch paneli.
można rzucić okiem na ten temat: http://stackoverflow.com/questions/7086440/mvc-validating-binded- to-entitiy-with-reference-to-other-ens pls (nie mam pojęcia jak się z tobą skontaktować bezpośrednio) :) thnx – cpoDesign