打印友好的 ASP.NET MVC 3 视图

15
我想创建一个ASP.NET MVC 3视图的打印友好版本,我该怎么做?如果我需要创建视图的某些部分的打印友好版本呢?
敬礼。
2个回答

18

我使用相同的视图,但有两个CSS文件(一个带有 media="screen",另一个带有media"print")。

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

示例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;
}

看看这篇好的《A List Apart》文章,讲解了CSS打印方面的知识:http://www.alistapart.com/articles/goingtoprint/


@mkeats:当链接被点击时,浏览器如何选择打印友好的样式表。 - DotnetSparrow
3
当普通浏览时,浏览器将使用screen.css文件进行呈现。当有人打印或进行打印预览时,浏览器会自动使用print.css文件进行呈现。您无需执行任何操作即可在不同的文件之间切换。 - Mark Keats
是的,只要媒体属性正确设置,文件名/路径可以是任何东西。 - Mark Keats
@mkeats:我需要创建一种特殊的打印友好按钮,并使用特定的文本来确保它在所有浏览器中都能正常工作吗? - DotnetSparrow
1
页面只有在用户打印页面或进行打印预览时,才会使用打印友好样式表显示。您不需要自己切换到打印友好视图。您可以使用 <a href="javascript:window.print()">点击以打印此页面</a> 来引导浏览器打开打印对话框。 - Mark Keats
显示剩余3条评论

7

我会仅通过CSS来实现这个功能,与MVC无关。

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

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

以这种方式操作的优点是:
  • 这就是CSS的意义所在,可以为不同的设备渲染相同的内容
  • 工作量更少,您不必维护两个MVC视图
  • 对用户更加方便,无论他们在哪个页面上,只需在浏览器中按下打印按钮即可,无需单击单独的“打印友好版本”链接。
  • 您对CSS所做的更改将适用于整个站点,例如,在打印的CSS中,如果您不想打印标志或菜单,则定义一个样式,所有页面都将应用该样式。

我该如何定义适合打印的 CSS? - DotnetSparrow
2
请参考mkeats的答案,了解如何操作。 - Daveo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接