如何在ASP.NET MVC中为视图创建自定义打印功能

时间:2013-11-18 11:26:49

标签: c# asp.net-mvc

我有一个C#ASP.NET MVC,我坚持使用一个功能。我的项目是一个业余爱好的游戏管理系统。

在用户添加一定数量的玩家并创建游戏后,它会返回包含所有游戏的视图。 (每场比赛两队)。

每个游戏和团队都是由两个foreach循环生成的,第一个循环遍历每个游戏并显示它们,第二个游戏和团队循环通过团队来显示玩家。

我想添加一个按钮,上面写着“打印”的内容,让用户下载pdf,但每页只需要一个游戏。 (这对老人来说是一种爱好,他们的眼睛很糟糕)

欢迎所有建议,我不确定从哪里开始。

1 个答案:

答案 0 :(得分:1)

你有选择。

  1. 根据您标记游戏,团队和玩家数据的显示方式,您可以使用CSS文件进行打印。 <link href="printme.css" rel="stylesheet" type="text/css" media="print" />为每个游戏及其相关数据显示<table>,然后使用选择器的默认高度进行播放,使其在打印时每页只显示一个。与此相关的是你可能必须根据你想要显示/隐藏的内容禁用其他标签/选择器,如果某些游戏桌有大量数据,那么你可能会在打印显示中得到意想不到的结果。

    < / LI>
  2. 使用SSRS RDLC报告,您可以完全控制打印的显示。使用MVC,您可以让最终用户下载PDF。这并不难,但它涉及到了。假设您可以在您的VS版本中创建一个RDLC文件,这里有一个非常高级别的内容:

    • 创建包含游戏,团队和玩家信息的数据传输对象(DTO)。您的游戏DTO可能具有Team DTO类型,其中包含玩家类型列表。确保您的DTO具有longform getter / setter。这是使RDLC方面满意的必要条件。例如,

    private long _gameID; public long GameID { get { return _gameID; } set { _gameID = value; } }

    • 创建一个数据集(XSD),其数据表的字段名称与您的DTO匹配。所以你应该有一个Game,Team和Player数据表。您需要在数据集设计器中明确链接它们。这些链接将表示RDLC报告中的主要详细信息重播。
    • 将RDLC文件添加到项目中,并使用VS编辑器创建所需的布局。将数据集/数据表添加为数据源。然后添加显示数据所需的控件。您可以使用Tablix控件或创建子报表来完成主/详细显示(即每个游戏与玩家团队合作)。
    • 从那里你可以将RDLC配置为每页只显示一个游戏。
    • 添加逻辑以将数据集链接到RDLC,然后创建报告并将其输出设置为PDF。
    • 创建一个MVC控制器,该控制器调用创建报告的RDLC代码并返回FileContentResult
  3. 以上是高级别,但网上有很好的资源可以帮助您完成它。这是a good article to get you going