2009-08-24 43 views
5

Trong ứng dụng ASP.NET MVC Tôi có một trang hành động() hiển thị một trang (giống như một trang wiki).ASP.NET MVC: Nhận một đầu ra hành động trong một hành động khác

Bây giờ, tôi có một hành động khác RenderPdf() sẽ thu thập đầu ra HTML của Trang() và sử dụng thành phần HTML2PDF để tạo phiên bản PDF của trang đó.

Làm cách nào để thu thập đầu ra HTML của một hành động trong một hành động khác. Lưu ý: không phải trong chế độ xem, nhưng trong mã tác vụ trực tiếp.

Trả lời

0

Bạn có thể sử dụng lắp ráp MVC Futures.

Có một phương pháp gọi là RenderAction() mà được đầu ra HTML của một hành động, nhưng từ bên trong một cái nhìn ...

+0

Trên thực tế Bruno, RenderAction() là một HtmlHelper, được thiết kế để sử dụng trong chế độ xem. Nó sẽ không cho phép mladen để nắm bắt đầu ra được trả lại. – apiguy

+0

Ồ, vâng, xin lỗi. Tôi sẽ điều chỉnh câu trả lời. Cảm ơn –

0

Nếu pdf chỉ là một bản sao của sản lượng CANT bạn sử dụng javascript để nắm bắt hình ảnh và quay lại Render PDF?

Hoặc, chuyển phiên bản pdf sang chế độ xem trong cùng một mô hình của hành động đầu tiên. Giữ nó ẩn nếu/cho đến khi người dùng cần nó?

+0

zsharp, đó là cách giải quyết mà tôi đã lên kế hoạch để làm, nhưng tôi không hài lòng với nó. Tôi sẽ có trường hợp PDF sẽ dài 100 trang. Tôi không thích chuyển HTML lớn qua lại bằng Javascript. – mladen

+0

cách khác có thể là tạo pdf trong mã hành động và lưu vào tệp trên máy chủ ngay trước khi hiển thị chế độ xem. truy cập pdf với id duy nhất được gửi để xem để khớp với id trong tên tệp. – zsharp

+0

zsharp, vấn đề là - để tạo PDF tôi cần HTML đầu tiên, bởi vì tôi đang sử dụng thành phần HTML2PDF – mladen

0

Bạn có thể kiểm tra awnser này cho một câu hỏi tương tự:

Send ASP.NET MVC action result inside email

Rõ ràng bạn sẽ cần phải thay thế các cuộc gọi SendEmailKThx() với thế hệ html2pdf PDF của bạn.

0

Phương pháp được đề xuất bởi Jan Willem B làm việc và tôi thử nghiệm này trên ASP NET MVC 1.

Trong khi gọi GetActionOutput, chỉ sử dụng tên của bộ điều khiển. ví dụ: nếu tên bộ điều khiển được gọi là AccountController, hãy chỉ định nó là Tài khoản.

ví dụ: nếu bạn muốn gọi Phương thức thử nghiệm trên AccountController, cú pháp sẽ là ... GetActionOutput ("Tài khoản", "Kiểm tra");

Các vấn đề liên quan