单击actionLink打开新窗口

145*_*446 5 model-view-controller asp.net-4.0 c#-4.0 asp.net-mvc-3 asp.net-mvc-5

我有一个要求从视图页面调用控制器方法的要求.单击下面的链接,应调用该方法.

@Html.ActionLink(item.InvoiceNumber, "SendPdfStatement", "Invoice", 
                 new { item.InvoiceNumber }, new { target = "_blank" })
Run Code Online (Sandbox Code Playgroud)

方法签名如下:

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);                                 

   }
Run Code Online (Sandbox Code Playgroud)

现在的问题是当我点击链接时,会打开一个空白窗口.我知道这是有道理的new { target = "_blank" }.如果我通过null它的位置我的链接页面变成空白.我应该在这里传递什么,以便我的页面保持不变,并且不会出现新的空白窗口.

soh*_*aib 6

试试这个

<%=Html.ActionLink(a.Title, "View", "Report", new { Id = a.id.ToString() }, new { target="_blank" })%> 
Run Code Online (Sandbox Code Playgroud)


bob*_*bek 2

更改您的控制器操作。您获得的页面是空白的,因为您没有返回任何内容。做

 public ActionResult 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); 

    return View();
    }
Run Code Online (Sandbox Code Playgroud)

编辑:或者您应该使用 AJAX,这样您的页面就不会重新加载,并且您不必从方法中返回任何内容。请阅读此处http://www.asp.net/mvc/overview/older-versions-1/contact-manager/iteration-7-add-ajax-functionity-cs