2012-06-22 17 views
2

我正在构建具有一些资源的ASP服务器控件。其中之一是.js文件,我必须从我的ServerControl.cs文件传递一个变量。服务器控件中嵌入资源的.js文件中的C#变量ASP.NET

我知道如何例如获得资源的图像在我的资源样式文件和JavaScript文件是这样的:

var resourceOpen = "<%=WebResource("PatientList.Images.DirOpen.png")%>" ; 
var resourceClose = "<%=WebResource("PatientList.Images.DirClose.png")%>"; 

background: url('<%=WebResource("PatientList.Images.letter-bg.png")%>'); 

我要与我的公共变量一样在我的服务器控件.cs文件 让我们说我有

public string TestVariable = "It works" 

如何将它传递给我的资源中的JavaScript文件?

var jsvariable = "<%=TestVariable%>" 

不起作用。似乎只有WebResource(...)有效。当我尝试使用变量,当我做这样的事情:

alert("<%=TestVariable%>"); 

与字符串“<%= TestVariable%>”的窗口会出现,而不是“它的工作原理”

+0

它应该工作......除了明显的“你丢失分号”。如果你使用VS(因为我)intellisense显示变量。 – carny666

+0

它的作品,但不是在我的嵌入式资源JavaScript文件。只有当我有我的aspx文件的代码隐藏单独的JavaScript和c#变量。但我想让服务器控制。包含所有内容的dll文件。发生问题。这很奇怪,因为它适用于<%= %>内的WebResource(...),但似乎与其他所有内容一起失败。 –

+0

啊,我明白了。也许你应该从主页面将值传递给你的JavaScript函数。 – carny666

回答

1

也许我不是正确理解你的问题,但你有一个引用外部JavaScript文件的服务器控件,但在你想在控件上使用属性的外部文件中。

如果这就是你要求的,那么恐怕没有编写自定义处理程序或类似的东西是不可能的。你看,外部JavaScript文件是由客户单独从你的控制执行中请求的。当JavaScript文件由服务器提供时,控件早已被销毁。

这里发生了什么:

  1. 的请求涉及到你的服务器的页面
  2. 该页面加载并创建你的用户控件和一个链接到外部JavaScript文件
  3. 客户端会从结果服务器
  4. 客户端看到一个指向外部JavaScript文件的链接,并从服务器请求它
  5. 对服务器的请求javascript文件进入服务器
  6. ,服务器对客户端的JavaScript文件

正如你可以看到,有两个请求在(步骤1和步骤5)的到来。在第二个请求中,对于JavaScript文件,您不再拥有可用属性的控件(在步骤1中)。

我能想到完成这件事的唯一方法就是使用自定义处理程序来提供javascript。通过这种方式,您可以将任何变量作为查询字符串值传递,并让自定义处理程序将它们插入到您的Java脚本中。

我希望这能回答你的问题。

+0

谢谢你的回答。但我有JavaScript文件作为我的服务器控件中的嵌入式资源,我可以解析这个文件,当我想从我的控制像图像获取其他资源(如我的问题所示)我只需要添加PerformSubstitution = true到我的AssemblyInfo。 cs文件。所以当我加载PARSE .js文件之前,我不相信没有从c#代码中获取单个变量的选项。但我只知道如何获得资源...变量不起作用:( –

+0

因为它们是常量,所以您可以添加外部图像。从原始文章中您可以引用“PatientList.Images.letter-bg.png”,因为这个文件很难被编译到你的程序集中,因此总是存在的,你的本地变量“TestVariable”的值只能在填充它的特定请求中使用,而实际获得JavaScript文件内容的后续请求不再有这个变量。 – Robba

相关问题