2009-07-09 77 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

相關問題