Setup:ASP.NET MVC Controller FileContent ActionResult nazywane za pośrednictwem AJAX
Kontroler zawiera metodę public ActionResult SaveFile()
która zwraca FileContentResult
.
Co działa:
Widok zawiera formularz, który składa do tej akcji. Rezultatem jest to dialog:
Co nie działa:
Widok zawiera pewne javascript, aby wykonać połączenie AJAX do tego samego działania regulatora, gdzie forma będzie publikować. Zamiast wywoływania wyżej wymienionego okna dialogowego lub nawet funkcji powodzenia AJAX, odpowiedź wyzwala funkcję błędu AJAX, a odpowiedź XMLHttpRequest.responseText
zawiera odpowiedź pliku.
Co muszę zrobić:
Złóż wniosek o pliku przy użyciu AJAX i skończyć z tym samym skutkiem jak przy składaniu formularza. Jak mogę uczynić żądanie AJAX podać okno dialogowe, które pokazuje formularz?
Dlaczego nie można po prostu użyć non-ajax rozmowy? – LukLed
Mogę, ale chcę wykonać inne przetwarzanie w funkcji javaScript po zakończeniu składowania, na przykład odblokować formularz, który zablokowałem przed zapisaniem. – Rick
OK, więc możesz najpierw wywołać ajax SaveFile. SaveFile zwróci true/false. Kiedy zwraca true, wywołujesz nie-ajax GET, aby pobrać plik. – LukLed