将MVC actionresult发送到打印机

时间:2011-11-28 14:08:46

标签: c# javascript .net asp.net-mvc

我有一个带有动作的控制器:

SomeController/ActionToBePrinted

ActionToBePrinted()返回一个html视图。

当按下按钮时,从正常的mvc剃刀视图调用此操作 - 当按下按钮时,如何将视图内容发送到打印机?

阿罗哈, 雨果

2 个答案:

答案 0 :(得分:3)

您无法直接向打印机发送邮件。

  1. 我建议你创建一个自定义的ActionResult,它返回一个PDF文件或类似的东西。 ASP.NET MVC Action Results and PDF Content

  2. 您也可以显示一个html页面并使用这样的javascript打开打印对话框

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

    但是用户必须始终开始打印过程,您无法以编程方式执行此操作。

答案 1 :(得分:1)

您可以执行GET请求(例如,使用window.open()并传入URL或使用AJAX)并将返回的HTML内容放入新窗口。然后使用

Window.print()。然后在完成后关闭窗口。

您可以通过在正文中添加内容将其直接绑定到单个视图中,但我更喜欢在这些情况下使用JavaScript。这使设计充当可在多个视图中使用的可重用对象或服务。换句话说,您设置控制器模型,但没有视图。相反,JavaScript会以视图的形式进入。

请记住,HTML不是打印格式。因此,如果您需要控制布局,则应使用PDF等打印技术。 XSLT提供了一种使用相同数据创建HTML和PDF输出的绝佳方法,尽管创建XSLT模板要比打下window.print

要多得多。

就个人而言,我有一个MVC页面作为服务获取URL参数。该页面挂钩到Adobe XSL-FO并使用参数来驱动输出。