2

我正在构建具有一些资源的 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%>");

将出现带有字符串“<%=TestVariable%>”的窗口,而不是“It works”

4

1 回答 1

1

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

如果那是您要问的,那么恐怕如果不编写自定义处理程序或类似的东西,这是不可能的。您会看到,客户端请求的外部 JavaScript 文件与您的控件执行是分开的。在服务器提供 JavaScript 文件时,控件早已被销毁。

这是发生的事情:

  1. 请求到达您的服务器以获取该页面
  2. 该页面加载并创建您的用户控件和指向外部 javascript 文件的链接
  3. 客户端从服务器获取结果
  4. 客户端看到外部 javascript 文件的链接并从服务器请求它
  5. 对 javascript 文件的请求进入服务器
  6. 服务器向客户端提供 javascript 文件

如您所见,有两个请求进入(步骤 1 和步骤 5)。在第二个请求中,即针对 javascript 文件的请求中,您不再拥有具有可用属性的控件(在步骤 1 中)。

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

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

于 2012-06-22T14:42:12.303 回答