如何在点击actionlink时摆脱空白窗口

时间:2011-12-13 20:22:43

标签: asp.net-mvc asp.net-mvc-3 html5 razor

点击下面的语句

创建的以下链接,会打开一个新的空白浏览器窗口
@Html.ActionLink(item.InvoiceNumber, "SendPdfStatement", "Invoice", new { item.InvoiceNumber }, new { target = "_blank" })

我试过

@Html.ActionLink(item.InvoiceNumber, "SendPdfStatement", "Invoice", new { item.InvoiceNumber }, new { target = "_self" })使原始窗口空白

@Html.ActionLink(item.InvoiceNumber, "SendPdfStatement", "Invoice", new { item.InvoiceNumber }, null)这也使原始窗口空白

@Html.ActionLink(item.InvoiceNumber, "SendPdfStatement", "Invoice", new { item.InvoiceNumber }在调用方法中引发异常,因为tem.InvoiceNumber被视为html参数

请建议

public void SendPdfStatement(string InvoiceNumber)

{

        InvoiceNumber = InvoiceNumber.Trim();

        ObjectParameter[] parameters = new ObjectParameter[1];
        parameters[0] = new ObjectParameter("InvoiceNumber", InvoiceNumber);

        List<Models.Statement> list = new List<Models.Statement>();
        list = _db.ExecuteFunction<Models.Statement>("uspInvoiceStatement", parameters).ToList<Models.Statement>();

        var statementResult = _db.ExecuteFunction<Models.Statement>("uspInvoiceStatement", parameters);
        Models.Statement statement = statementResult.SingleOrDefault();

        pdfStatementController.WriteInTemplate(statement);

    }

1 个答案:

答案 0 :(得分:0)

由于您的控制器签名是

,您将获得一个空白窗口

public void SendPdfStatement(string InvoiceNumber) { .. } - 这实际上会为您的观点返回一个空白。

如果您确实想要返回某些内容,请将您的控制器转换为public ActionResult SendPdfStatement(...),或者甚至只是字符串..无论您想要返回什么内容。

如果您不想返回任何内容,请使用@Ajax.Actionlink来调用该方法。