asp.net ext.net在浏览器新窗口中显示文件

asp.net ext.net在浏览器新窗口中显示文件,asp.net,asp.net-mvc,asp.net-mvc-4,model-view-controller,ext.net,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Model View Controller,Ext.net,我们的asp.net应用程序使用EXT.net。 单击“查看”菜单时,将显示一个包含PDF文件内容的EXT.NET窗口。 问题是我们不能将该窗口拖放到Outlook电子邮件的正文中(使其成为电子邮件附件) 我在想,拖放到Outlook电子邮件正文的一种方法是在浏览器窗口中显示PDF文件,而不是在EXT.NET窗口中。我该怎么做? 多谢各位 这来自视图(Index.cshtml): 这来自ArchiveController.cs: public ActionResult Submit(st

我们的asp.net应用程序使用EXT.net。 单击“查看”菜单时,将显示一个包含PDF文件内容的EXT.NET窗口。 问题是我们不能将该窗口拖放到Outlook电子邮件的正文中(使其成为电子邮件附件)

我在想,拖放到Outlook电子邮件正文的一种方法是在浏览器窗口中显示PDF文件,而不是在EXT.NET窗口中。我该怎么做? 多谢各位

这来自视图(Index.cshtml):

这来自ArchiveController.cs:

    public ActionResult Submit(string selection)
    {
            int cnt = SetTempData(selection);
            RenderWindows(String.Format("View Archive {0}.",cnt),0,cnt);
            return this.Direct();
   }

    [ChildActionOnly]
    public void RenderWindows(string title,int download,int cnt)
    {
        Window win = new Window
        {
            ID = "Windows1",
            Title = title,
            Icon = Ext.Net.Icon.PageWhiteAcrobat,
            Height = download == 1 ? 150 : 600,
            Width = download == 1 ? 400 : 800,
            BodyPadding = 2,
            Modal = true,
            Layout = "Fit",
            CloseAction = CloseAction.Destroy,
            Loader = new ComponentLoader()
            {
                Url = Url.Action("ArcTicket", "Archive"),
                Mode = LoadMode.Frame,
                DisableCaching = true,
                ShowWarningOnFailure = true,
                LoadMask = { ShowMask = true, Msg = String.Format("Generating {0} pdf ...",cnt) }
            },
            Buttons = {
                new Button(){ Text="Close & Clear", Icon=Ext.Net.Icon.TableRowDelete, Handler="App.GridPanel1.selModel.deselectAll();App.Windows1.close();"},
                new Button(){ Text="Close", Icon=Ext.Net.Icon.Cancel, Handler="App.Windows1.close();"}
                    }
        };
        win.Loader.Params.Add(new Parameter() { Name = "download", Value = download.ToString(), Mode = ParameterMode.Value });
        win.Render(RenderMode.Auto);
    }

    public FileStreamResult ArcTicket(int download)
    {
        String id = TempData["xid"].ToString();
        TempData.Remove("xid");
        String ticket = Uow.TICKETs.GetXmlBatch(id);

        Byte[] pdf = MvcApplication.Fop.Write(enumFobFormat.Pdf
                            , ticket
                            , Server.MapPath("/Resources/xslt/Ticket.xsl")
                            );

        MemoryStream ms = new MemoryStream(pdf);
        FileStreamResult fs = new FileStreamResult(ms, "application/pdf");
        if (download == 1)
            fs.FileDownloadName = string.Format("Archive_{0:yyyyMMdd_HHmmss}.pdf", DateTime.Now);

        return fs;
    }

您可以使用
href
将普通按钮/链接设置为
ArcTicket
操作设置为
target=“\u blank”
,然后它将在新选项卡中打开

更新:

把顶栏改成这样。选项1可能有问题,因为来自网格的动态参数,我不确定是否可以将其传递到那里

备选案文1:

.TopBar(
            X.Toolbar().MinHeight(35)
                .Items(
            :
                            , X.Button()
                                    .Text("View")
                                    .Icon(Icon.PageWhiteAcrobat)
                                    .Href(Url.Action("ArcTicket", "Archive"))
                                    .HrefTarget("blank")
                                    .BaseParams("yourparameters")
选择2

.TopBar(
            X.Toolbar().MinHeight(35)
                .Items(
            :
                            , X.Button()
                                    .Text("View")
                                    .Icon(Icon.PageWhiteAcrobat)
                                    .Handler("YourJSFUnctionWithWIndowOpen")

非常感谢。我该怎么做?你是说在这一部分?{Url=Url.Action(“ArcTicket”,“Archive”),Mode=LoadMode.Frame,DisableCaching=true,ShowWarningOnFailure=true,LoadMask={ShowMask=true,Msg=String.Format(“生成{0}pdf…”,cnt)},当我在Url.Action中添加新的{target=“\u blank”}时,它仍然显示在EXT.NET窗口中,而不是在新的浏览器选项卡/窗口中:Url=Url.Action(“ArcTradeTicket”、“Archive”、new{target=“\u blank”})、Mode=LoadMode.Frame、DisableCaching=true、ShowWarningOnFailure=true、LoadMask={ShowMask=true,Msg=String.Format(“正在生成{0}pdf交易票据…”,cnt)}不,我想删除窗口,而不是TopBar
X.Button
Ext.DirectEvent
使普通按钮链接与目标
\u为空。
我在文档中查找了
按钮
有属性
Href
这里是链接
HrefTarget
这里是
\u blank
基本参数
这里是添加的不一致的参数。最终如果不起作用,您可以创建JS onclick处理程序,然后在那里创建
window.open()
或类似的东西。您的意思是在视图中执行此操作吗?您所说的“删除窗口”是什么意思?您所说的“改为TopBar X.Button Ext.DirectEvent使普通按钮链接”是什么意思?您的意思是在.TopBar X.button()之外添加普通按钮添加普通按钮href链接吗?
.TopBar(
            X.Toolbar().MinHeight(35)
                .Items(
            :
                            , X.Button()
                                    .Text("View")
                                    .Icon(Icon.PageWhiteAcrobat)
                                    .Handler("YourJSFUnctionWithWIndowOpen")