asp.net ext.net在浏览器新窗口中显示文件
我们的asp.net应用程序使用EXT.net。 单击“查看”菜单时,将显示一个包含PDF文件内容的EXT.NET窗口。 问题是我们不能将该窗口拖放到Outlook电子邮件的正文中(使其成为电子邮件附件) 我在想,拖放到Outlook电子邮件正文的一种方法是在浏览器窗口中显示PDF文件,而不是在EXT.NET窗口中。我该怎么做? 多谢各位 这来自视图(Index.cshtml): 这来自ArchiveController.cs: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
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")