2011-11-28 27 views
6

Tôi có một bộ điều khiển với một hành động:Gửi MVC ActionResult đến máy in

SomeController/ActionToBePrinted 

ActionToBePrinted() trả về một cái nhìn html.

Hành động này được gọi từ chế độ xem dao cạo mvc bình thường khi nhấn nút - làm cách nào để gửi nội dung của chế độ xem tới máy in khi nhấn nút?

Aloha, Hugo

+0

Sửa đổi mẫu của bạn để 'window.print()' kích hoạt trong cơ thể. Sau đó, khi tải, nó sẽ cho trình duyệt biết trang đó nên được in. –

+0

Tôi đã kết thúc mở theo lời khuyên của bạn. Mở khung nhìn trong cửa sổ mới và thêm window.print() vào trang - cảm ơn rất nhiều cho các câu trả lời nhanh! –

Trả lời

3

Bạn không thể gửi trực tiếp đến máy in.

  1. Tôi đề nghị bạn tạo ActionResult tùy chỉnh, trả về tệp PDF hoặc nội dung tương tự. ASP.NET MVC Action Results and PDF Content

  2. Bạn có thể hiển thị một trang html như tốt và mở hộp thoại in sử dụng javascript như thế này

<a href="javascript:window.print()">Click to Print This Page</A>

Nhưng lúc nào cũng là người dùng phải bắt đầu quá trình in, bạn không thể làm được điều này theo lập trình.

+0

Cảm ơn rất nhiều vì câu trả lời nhanh! –

1

Bạn có thể thực hiện một yêu cầu GET (ví dụ sử dụng window.open() và vượt qua trong URL hoặc sử dụng AJAX) và đưa các nội dung HTML trở thành một cửa sổ mới. Sau đó, sử dụng

Window.print(). Sau đó, chỉ cần đóng cửa sổ khi bạn hoàn tất.

Bạn có thể liên kết trực tiếp với một chế độ xem bằng cách thêm nội dung nào đó vào cơ thể, nhưng tôi thích sử dụng JavaScript trong những trường hợp này. Điều này giúp thiết kế hoạt động như một đối tượng hoặc dịch vụ có thể sử dụng lại có thể được sử dụng trên nhiều chế độ xem. Nói cách khác, bạn thiết lập mô hình bộ điều khiển, nhưng không có chế độ xem. Thay vào đó, JavaScript bước vào dưới dạng Chế độ xem.

Hãy nhớ rằng HTML không phải là định dạng in. Vì vậy, nếu bạn cần kiểm soát bố cục, bạn nên sử dụng công nghệ in như PDF. XSLT cung cấp một phương tiện tuyệt vời để tạo cả đầu ra HTML và PDF bằng cách sử dụng cùng một dữ liệu, mặc dù có nhiều công việc hơn để tạo các mẫu XSLT hơn là để slap xuống window.print

Cá nhân, tôi có một trang MVC hoạt động như một dịch vụ lấy thông số URL. Trang này đưa vào Adobe XSL-FO và sử dụng các tham số để điều khiển đầu ra.

+0

Cảm ơn rất nhiều vì câu trả lời nhanh! –

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