单击 actionLink 会打开新窗口 [英] New window opens on click of actionLink

查看:25
本文介绍了单击 actionLink 会打开新窗口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要从视图页面调用控制器方法.单击下面的链接应调用该方法.

I have a requirment to invoke a controller method from the view page. On click of the link below the method should be invoked.

@Html.ActionLink(item.InvoiceNumber, "SendPdfStatement", "Invoice", 
                 new { item.InvoiceNumber }, new { target = "_blank" })

方法签名如下:

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

   }

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

now the problem is when i click on the link, a blank window opens. I know it is something with new { target = "_blank" }. If i pass null in its place my page with link becomes blank. What shall i pass here so the my page remains as it is and no new blank window also appears.

推荐答案

更改您的控制器操作.你得到的页面是空白的,因为你没有返回任何东西.做

Change your controller Action. The page that you get is blank because you are not returning anything. Do

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

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

Or you should use AJAX so that your page is not reloaded and you don't have to return anything from your method. Read here http://www.asp.net/mvc/overview/older-versions-1/contact-manager/iteration-7-add-ajax-functionality-cs.

这篇关于单击 actionLink 会打开新窗口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆