2013-04-07 34 views
2

我需要創建一個按鈕來提供可打印的發票。這將重新格式化網頁,專門用於打印購買門票信息。由頁面類提供的響應方法?

我只允許使用一個網頁,並且不知何故頁面上的其他所有內容都必須消失,以便只顯示可打印發票。我怎樣才能做到這一點?

有人告訴我:「訣竅是使用Page類提供的Response方法(更確切地說,它是由一個名爲System.Web的父類提供的) 您在屏幕上顯示的是由System.Web對象管理,並使用響應方法,你可以把任何你想要的東西放在那裏。「

回答

1

'技巧'意味着你可以發送你想要的任何響應。例如,如果您想發送pdf,您可以更改響應以發送PDF的字節流,更改標題並將客戶端用作pdf文件。

這就是說這個問題非常模糊,並且有很多可能的答案。 「只允許使用一個網頁」 - 這是否意味着你只能有一個網址或一個aspx文件?因爲你可以非常容易地將Server.Transfer轉移到第二個頁面,並且這將使你仍然在同一頁面上。

它是否也必須是包含此發票的網頁?還是可以使用工具(例如SQL Reporting Services)生成它並將其作爲pdf提供?

如果您遇到單個網頁,最簡單的方法是使用兩個面板。其中一個包含「發票」,另一個包含頁面通常包含的內容。如果用戶需要發票,請隱藏其他面板並顯示發票。發票本身可以/應該是一個自定義控件(ascx),因此您可以隨時將其插入,並且仍然保持關注點分離。

+0

看起來我們在同一時間寫了我們的答案。我的一個演示了海德里安最後一段中描述的方法。 – 2013-04-07 08:57:44

2

沒有必要亂用Response對象。

訣竅是使用CSS media types - 特別是print CSS file

添加打印CSS文件的頁面:

<LINK REL="stylesheet" TYPE="text/css" MEDIA="print" HREF="foo.css" /> 

在這個文件中,您將一切的display屬性,你需要隱藏到none,你可以調整你需要顯示到什麼CSS優化打印。

當用戶使用正常的瀏覽器打印功能打印時,這將用於渲染打印。