2009-07-09 60 views
1

私は従来のWebアプリケーションをリファクタリングしています。このアプリは、このjavascriptスクリプトを実行するためにbodyタグの中のonloadイベント(マスターページ上で)を使用しています。このスクリプトタグはdocのform要素の後にあることに注意してください。私は文法が恐ろしい(または少なくともVisual Studioはそれがsquigglesであることを伝えている)と思われますが、私はうんざりしているでしょう、そのことは本当にうまくいきます。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(); 

Can /私はこのようにする必要がありますか?または、変数を返すWebServiceを作成する必要があります。アドバイスありがとう。サンディエゴの

乾杯、
〜CK

答えて

1

は、あなたは、単にアヤックスを作る言ったようにこれを行うための簡単な方法は次のようになります(つまり、Page_Loadイベントハンドラ)の後ろに、あなたのコード内で

0

Page.ClientScript.RegisterClientScriptBlock(typeof(YOURPAGECLASS), "KEY", "ACTUALJSCODE");を使用しますセッションから必要な値を返すページメソッド、MVCアクション、HttpHandler、またはWebサービスを呼び出します。ここで重要なのは、セッション状態でPDFファイルへのパスを保存する理由です。

+0

このアプリでは、「createInvoice.aspx」というページには、画面の内容に基づいてアクティブなレポートを実行するボタンがあり、そのレポートはPDF形式で保存されます作成されたPDF。ここでの要件は、新しく作成されたPDFをポップアップすることです。ボタンをクリックするとフォームがポストバックされ、onloadハンドラには値があるので、そのファイルパスを使って新しいウィンドウを開きます。私はそれを再設計するように頼んだが、経営陣はそれが動作するようにそれと一緒に行きたい。彼らは、もちろん、非常に "私を指向"なので、常に新しいものを見たいと思っています。物事をきれいにする時間がない。 :(任意のアイデア? – Hcabnettek

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

関連する問題