3

我是编程新手,我有一个按钮,当我点击它时,它会返回到上一页。而不是按钮返回上一页如何让该按钮打印当前信息?

这是我的 PrintIndexViewModel 类

using NavisionStore.Domain.Entities;

namespace NavisionStore.WebUI.Models
{
    public class PrintIndexViewModel
    {
        public Print Print { get; set; }
        public string ReturnUrl { get; set; }
    }
}

这是我的打印控制器

namespace NavisionStore.WebUI.Controllers
{
    public class PrintController : Controller
    {
        private IProductRepository repository;

        public PrintController(IProductRepository repo)
        {
            repository = repo;
        }

        public ViewResult Index(string returnUrl)
        {
            return View(new PrintIndexViewModel
            {
                Print = GetPrint(),
                ReturnUrl = returnUrl
            });
        }
         public RedirectToRouteResult AddtoPrint(int id, string returnUrl)
        {
            Product product = repository.Products
                .FirstOrDefault(p => p.Id == id);

            if (product != null)
            {
                GetPrint().AddItem(product, 1);
            }
            return RedirectToAction("Index", new { returnUrl });
        }

        public RedirectToRouteResult RemoveFromPrint(int id, string returnUrl)
        {
            Product product = repository.Products
                .FirstOrDefault(p => p.Id == id);

            if (product != null)
            {
                GetPrint().RemoveLine(product);
            }
            return RedirectToAction("Index", new { returnUrl });
        }

        private Print GetPrint()
        {
            Print print = (Print)Session["Print"];
            if (print == null)
            {
                print = new Print();
                Session["Print"] = print;
            }
            return print;
        }
    }
}

这是查看 printindexveiwmodel

@model NavisionStore.WebUI.Models.PrintIndexViewModel

@{
    ViewBag.Title = "Bag Labels: Your Print";
}

<h2>Caplugs West</h2>
<table width="90%" align="center">
    <thead><tr>
        <th align="center">PN:</th>
        <th align="center">QTY:</th>
        <th align="center">B#</th>
           </tr></thead>
    <tbody>
        @foreach(var line in Model.Print.Lines) {
            <tr>
                <td align="center">@line.Product.PartName</td>
                <td align="center">@line.Product.Quantity</td>
                <td align="center">@line.Product.BagNumber</td>
            </tr>
        }
    </tbody>
    </table>
    <p align="center" class="actionButtons">
        <a href="@Model.ReturnUrl">Print</a>
    </p>
4

1 回答 1

7

您可以考虑将它们发送到另一个页面(新选项卡?)并显示您需要打印的数据,然后在用户单击浏览器上的打印时使用打印样式表。您可以将样式表中的语句分组以仅用于打印:

@media print{
   .ad{
      display: none;
   }
}

我不确定这是否是您正在寻找的。如果您希望能够强制打开打印对话框,我相信您将需要 javascript。您可以创建一个按钮,为他们打开他们的打印对话框(当前页面并使用您的打印样式表隐藏您不想打印的所有内容):

<input type="button" value="Print this page" onclick="window.print()">

另一种选择是从您的控制器或类似的东西返回一个 pdf。

于 2013-11-07T15:29:18.290 回答