2009-07-09 79 views
1

我正在重构一个遗留的Web应用程序。这个应用程序有一个正在使用身体标记内的onload事件(在母版页上)来运行此JavaScript脚本。请注意,此脚本标记位于文档中的表单元素之后。我知道语法看起来很丑陋(或者Visual Studio至少告诉它是由歪曲的),但我会感到厌烦,事情确实有效。如何将一个ASP.NET会话变量转换为JavaScript文件?

function DisplayPDF() 
{ 
    var strPDF 
    strPDF = "<%=SESSION("PDF")%>"; 
    if (strPDF.length != 0) 
    { 
     window.open(strPDF); 
     <%Session("PDF") = ""%> 
    } 
} 

我的问题是我正在努力开发一个更优雅的解决方案。我有ASP.NET AJAX和jQuery都可以使用。我写了一个我想用来处理这个问题的小型asp.net ajax组件。

Type.registerNamespace("ck"); 

ck.pdfOpener = function() { 
    ck.pdfOpener.initializeBase(this); 
} 

ck.pdfOpener.prototype = { 
    initialize: function() { 
     ck.pdfOpener.callBaseMethod(this, 'initialize'); 
    }, 

    dispose: function() {   
     ck.pdfOpener.callBaseMethod(this, 'dispose'); 
    }, 

    openPDF: function(){ 
     //HOW CAN I RETRIEVE A SESSION VARIABLE HERE??? 
    } 
} 

ck.ClientControl.registerClass('ck.pdfOpener', Sys.Component); 
if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded(); 

可以/我应该这样做吗?或者我应该创建一个返回所述变量的WebService。感谢您的任何建议。

干杯,
〜CK在圣地亚哥

回答

1

使用在后面的代码中Page.ClientScript.RegisterClientScriptBlock(typeof(YOURPAGECLASS), "KEY", "ACTUALJSCODE");(即Page_Load事件处理程序)

0

一个简单的方法做,你只是说让一个Ajax,这将是调用一个页面方法,MVC动作,HttpHandler或Web服务,它从会话中返回所需的值。这里更大的问题是为什么你要在会话状态下存储PDF文件的路径?

+0

在这个应用程序,一个页面上,说:“createInvoice.aspx”,有运行基于屏幕内容主动报告的按钮,该报告被保存为PDF格式,这是路径,新创建PDF。这里的要求是弹出新创建的PDF。单击该按钮将表单发回,并且onload处理程序会看到有一个值,因此它会使用该文件路径打开一个新窗口。我已经请求重新设计该管理器,但是管理层希望在工作时使用它。他们当然非常“以我为主”,所以他们总是想看到新的东西。没时间清理东西了。 :(任何想法? – Hcabnettek 2009-07-09 16:15:54

1

替代地,您可以直接从asp.net页面发送PDF文件,而不是在客户端脚本中。

string pdfFile = Session("PDF"); 
if (!string.IsNullOrEmpty(pdfFile)) 
{ 
    Session.Remove("PDF"); 

    Response.ContentType = "application/pdf"; 
    FileInfo fi = new FileInfo(pdfFile); 
    Response.AddHeader("Content-Disposition", "attachment; filename=\"" + Path.GetFileName(pdfFile) + "\""); 
    Response.AddHeader("Content-Length", fi.Length.ToString()); 
    Response.WriteFile(pdfFile); 
    Response.Flush(); 
    return; 
} 
+0

这个作品美丽!谢谢你的建议! – Hcabnettek 2009-07-10 21:26:13

相关问题