【问题标题】:asp.net ext.net show file in browser new windowasp.net ext.net 在浏览器新窗口中显示文件
【发布时间】:2017-01-04 03:57:51
【问题描述】:

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

我正在考虑拖放到 Outlook 电子邮件正文的一种方法是在浏览器窗口中显示 PDF 文件,而不是在 EXT.NET 窗口中。我怎样才能做到这一点 ? 谢谢。

这是来自视图(Index.cshtml):

@{
ViewBag.Title = "Archive";
var X = Html.X();
}

@section SPAViews {
@(
X.Viewport().Layout(LayoutType.Fit).Items(
X.TabPanel().ID("ArchiveTabPanel")
.Items(
        X.GridPanel().ID("GridPanel1").MarginSpec("1 1 1 1").Cls("cust-grid").Title("Archive").Icon(Icon.ServerCompressed)
        .Plugins(X.GridFilters())
        .View(Html.X().GridView().StripeRows(true).TrackOver(false))
        .SelectionModel(X.CheckboxSelectionModel().Mode(SelectionMode.Multi))
        .TopBar(
            X.Toolbar().MinHeight(35)
                .Items(
            :
                            , X.Button()
                                    .Text("View")
                                    .Icon(Icon.PageWhiteAcrobat)
                                        .DirectEvents(de =>
                                        {
                                            de.Click.Action = "Submit";
                                            de.Click.EventMask.ShowMask = true;
                                            de.Click.Method = HttpMethod.POST;
                                            de.Click.ExtraParams.Add(new Parameter()
                                            {
                                                Name = "selection",
                                                Value = "getselection()",
                                                Mode = ParameterMode.Raw
                                            });
                                            de.Click.Timeout = 360000;
                                        })

这是来自 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;
    }

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-4 model-view-controller ext.net


    【解决方案1】:

    您可以使用target="_blank" 将普通按钮/链接与href 链接到ArcTicket 操作,然后它将在新标签中打开

    更新:

    将 .TopBar 更改为类似的内容。由于来自网格的动态参数,选项 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("Generating {0} pdf . ..",cnt) } },
    • 当我在 Url.Action 中添加新的 { target = "_blank" } 时,它仍然显示在 EXT.NET 窗口中,而不是在新的浏览器选项卡/窗口中: Url = Url.Action( "ArcTradeTicket", "Archive", new { target = "_blank" }), Mode = LoadMode.Frame, DisableCaching = true, ShowWarningOnFailure = true, LoadMask = { ShowMask = true, Msg = String.Format("Generating {0} pdf 交易单...",cnt) }
    • 不,我的意思是删除窗口,而不是 TopBar X.Button Ext.DirectEvent 与目标 _blank. 建立普通按钮链接
    • 我查看了文档,对于 Button 有属性 Href 这里是你的链接 HrefTarget 这里是 _blankBaseParams 这里有附加参数。最终,如果不起作用,您可以创建 JS onclick 处理程序,在那里您可以制作 window.open() 或类似的东西
    • 您的意思是在视图中执行此操作吗? “删除窗口”是什么意思?您所说的“而不是 TopBar X.Button Ext.DirectEvent 使正常按钮链接”是什么意思?您的意思是在 .TopBar X.Button() 之外添加普通按钮添加普通按钮 href 链接?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    相关资源
    最近更新 更多