如何将 ASP.NET 会话变量放入 javascript 文件中?
我正在重构一个遗留的网络应用程序。 该应用程序使用 body 标记内的 onload 事件(在母版页上)来运行此 javascript 脚本。 请注意,此脚本标记位于文档中的表单元素之后。 我知道语法看起来很可怕(或者 Visual Studio 至少通过波形曲线告诉我们),但我会很遗憾,这东西确实有效。
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在圣地亚哥
I am refactoring a legacy web app. This app has a is using the onload event inside the body tag (On the Master page) to run this javascript script. Note this script tag is after the form element in the doc. I know the syntax looks hideous (or Visual Studio at least tells it is by the squiggles), but I'll be darned, the thing DOES indeed work.
function DisplayPDF()
{
var strPDF
strPDF = "<%=SESSION("PDF")%>";
if (strPDF.length != 0)
{
window.open(strPDF);
<%Session("PDF") = ""%>
}
}
My question is I'm trying to develop a more elegant solution. I have ASP.NET ajax and jQuery both available to me. I wrote a tiny asp.net ajax component that I want to use to handle this.
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/Should I be doing it this way? Or should I create a WebService that returns said variable. Thanks for any advice.
Cheers,
~ck in San Diego
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在后面的代码中使用
Page.ClientScript.RegisterClientScriptBlock(typeof(YOURPAGECLASS), "KEY", "ACTUALJSCODE");
(即 Page_Load 事件处理程序)Use the
Page.ClientScript.RegisterClientScriptBlock(typeof(YOURPAGECLASS), "KEY", "ACTUALJSCODE");
in your code behind (i.e. the Page_Load event handler)或者,您可以直接从 asp.net 页面发送 PDF 文件,而不是在客户端脚本中发送。
Alternatlively, you could send the PDF file directly from the asp.net page instead of within the client script.
一种简单的方法是,正如您所说,只需对页面方法、MVC 操作、HttpHandler 或从会话返回所需值的 Web 服务进行 Ajax 调用。 这里更大的问题是为什么要在会话状态中存储 PDF 文件的路径?
A simple way to do this would be as you said simply make an Ajax call to a page method, MVC action, HttpHandler or web service that returns the required value from the session. The bigger question here is why you are storing the path to a PDF file in your session state?