来自服务器控件ASP.NET中的embeded资源的.js文件中的C#变量

时间:2012-06-22 11:16:18

标签: c# javascript asp.net variables custom-server-controls

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

我知道如何在我的资源样式文件和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%>");

包含字符串“&lt;%= TestVariable%&gt;”的窗口将出现而不是“它的作品”

1 个答案:

答案 0 :(得分:1)

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

如果这就是你所要求的,那么我担心如果不编写自定义处理程序或类似的东西是不可能的。您可以看到,客户端从您的控制执行中单独请求外部JavaScript文件。在服务器提供JavaScript文件时,控件很久就被破坏了。

以下是发生的事情:

  1. 请求来到您的服务器页面
  2. 页面加载并创建用户控件和外部JavaScript文件的链接
  3. 客户端从服务器获取结果
  4. 客户端看到外部javascript文件的链接并从服务器请求
  5. javascript文件的请求来自服务器
  6. 服务器为客户端提供javascript文件
  7. 如您所见,有两个请求进入(步骤1和步骤5)。在第二个请求中,对于javascript文件,您不再拥有可用属性的控件(在步骤1中)。

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

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