2009-08-24 20 views
5

W aplikacji ASP.NET MVC mam stronę akcji(), która renderuje stronę (jak strona wiki).ASP.NET MVC: Uzyskaj dane wyjściowe działania w ramach innej akcji

Teraz mam kolejną akcję RenderPdf(), która powinna zbierać dane wyjściowe HTML strony() i używać komponentu HTML2PDF do utworzenia wersji PDF tej strony.

Jak mogę zebrać dane wyjściowe HTML jednej akcji w ramach innej akcji. Uwaga: nie w widoku, ale bezpośrednio w kodzie akcji.

Odpowiedz

0

Można użyć zestawu MVC Futures.

Jest to metoda zwana RenderAction(), która pobiera dane wyjściowe HTML działania, ale od wewnątrz widokiem ...

+0

W rzeczywistości Bruno, RenderAction() to HtmlHelper, który jest przeznaczony do użycia w widoku. Nie pozwoli to na przechwycenie renderowanego wyjścia przez mladen. – apiguy

+0

O tak, przepraszam. Dostosuję odpowiedź. Dzięki –

0

Jeśli plik PDF jest po prostu kopią wyjścia nie można użyć javascript, aby uchwycić obrazu i przejść z powrotem do Renderowania PDF?

Lub prześlij wersję pdf do widoku w tym samym modelu pierwszej akcji. Ukryj to, jeśli/aż użytkownik tego nie potrzebuje?

+0

zsharp, to jest obejście, które planowałem zrobić, ale nie jestem z niego zadowolony. Będą przypadki, w których PDF będzie miał 100 stron. Nie podoba mi się przekazywanie dużego kodu HTML z JavaScriptem. – mladen

+0

Innym sposobem może być utworzenie pliku pdf w kodzie akcji i zapisanie pliku na serwerze tuż przed wyświetleniem renderowania. dostęp do pliku pdf z unikalnym identyfikatorem wysłanym do widoku, aby dopasować identyfikator w nazwie pliku. – zsharp

+0

zsharp, problem polega na tym, - aby utworzyć plik PDF, najpierw potrzebuję kodu HTML, ponieważ korzystam z komponentu HTML2PDF – mladen

0

Metoda zaproponowana przez Jana Willema B działa i testowałem to na ASP.NET MVC 1.

Podczas rozmowy GetActionOutput używać tylko nazwę kontrolera. np. jeśli wywołana nazwa kontrolera to AccountController, należy ją adresować tylko jako konto.

np. jeśli chcesz wywołać metodę testową na AccountController, składnia będzie ... GetActionOutput ("Konto", "Test");

Powiązane problemy