2011-04-06 69 views

回答

7

我会这样做只是通过CSS,而不是任何与MVC。

只需为打印定义一个单独的样式表。例如

<link rel="stylesheet" type="text/css" href="print.css" media="print" /> 

做这种方式的优点是:

  • 这就是CSS是为那些渲染相同内容不同为不同的设备
  • 更少的工作,你不必维护2 MVC浏览量
  • 用户更容易,不管他们在哪个页面上,他们只需按下浏览器上的打印按钮就可以工作,他们不必单击单独的打印机友好版本链接。
  • 如果您不想在CSS中打印您定义的徽标或菜单,并且所有页面都将应用该样式,则您对CSS所做的更改将在站点范围内进行,例如在CSS中进行打印。
+0

如何我可以定义打印友好的CSS? – DotnetSparrow 2011-04-06 09:01:27

+2

查看mkeats的答案,了解如何 – Daveo 2011-04-06 09:05:12

18

我用了同样的观点,但有2个CSS文件(一个media="screen"和其他与media"print")。

在打印CSS文件中,我使用CSS隐藏所有不相关的DOM元素,使用display:none;

例MVC视图:

<html> 
<head> 
    <link rel="stylesheet" type="text/css" media="screen" href="screen.css" /> 
    <link rel="stylesheet" type="text/css" media="print" href="print.css" /> 
</head> 
<body> 
    <div id="pageHeader">This will not be shown in print - menubar, etc.</div> 
    <h1>Title</h1> 
    <p>Text</p> 
</body> 
</html> 

例print.css文件:

#pageHeader { 
    display: none; 
} 

看一看这个好 '相隔名单' 上的CSS文章打印:http://www.alistapart.com/articles/goingtoprint/

+0

@mkeats:浏览器如何在链接上选择打印友好的样式表单击 – DotnetSparrow 2011-04-06 09:05:07

+3

浏览器将使用screen.css文件进行渲染以进行正常浏览。当有人打印或进行打印预览时,自动渲染将随着print.css文件自动渲染。你不需要做任何事情来切换不同的文件。 – 2011-04-06 09:07:48

+0

@mkeats:我可以保留css文件的名称,只需添加/更改媒体类型? – DotnetSparrow 2011-04-06 09:31:33