服务器控件ASP.NET中嵌入资源的.js文件中的C#变量

服务器控件ASP.NET中嵌入资源的.js文件中的C#变量,c#,javascript,asp.net,variables,custom-server-controls,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.Di

我正在构建我的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")%>');
alert("<%=TestVariable%>");
如何将其传递到我的参考资料中的javascript文件

var jsvariable = "<%=TestVariable%>"
var jsvariable=“”
不起作用。似乎只有WebResource(…)起作用。当我尝试使用变量时,当我做这样的事情时:

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

background: url('<%=WebResource("PatientList.Images.letter-bg.png")%>');
alert("<%=TestVariable%>");
警报(“”);

将显示带有字符串“”的窗口,而不是“It works”

可能我没有正确理解您的问题,但您有一个引用外部JavaScript文件的服务器控件,但在外部文件中,您希望在该控件上使用属性

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

下面是发生的情况:

  • 一个请求到达您的服务器以获取页面
  • 该页面加载并创建用户控件和指向外部javascript文件的链接
  • 客户端从服务器获取结果
  • 客户端看到指向外部javascript文件的链接,并从服务器请求该链接
  • 对javascript文件的请求在服务器上传入
  • 服务器向客户端提供javascript文件
  • 如您所见,有两个请求(步骤1和步骤5)。在第二个请求(javascript文件的请求)中,您不再拥有具有可用属性的控件(在步骤1中)

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


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

    它应该能起作用。。。除了明显的“你缺少分号”之外。如果您使用的是VS(和我一样),intellisense会显示变量。它可以工作,但不能在我的嵌入式资源javascript文件中工作。只有当我的代码中有单独的javascript和c#变量时,我才能将其保存到我的aspx文件中。但我想让服务器控件.dll文件包含所有内容。问题就出现在那里。这很奇怪,因为它在内部与WebResource(…)一起工作,但在其他方面似乎都失败了。啊,我明白了。也许你应该把这些值从主页上传递给你的javascript函数。如果你觉得WebResource工作很奇怪,因为DateTime.Now.ToString()不工作。谢谢你的回答。但我在服务器控件中嵌入了javascript文件作为一个资源,当我想从控件中获取其他资源(如我的问题中所示)时,我可以解析这个文件,我只需将PerformSubstitution=true添加到AssemblyInfo.cs文件中。所以,当我能够在加载前解析.js文件时,我不认为没有从c#代码中获取单个变量的选项。但我只知道如何获取资源。。。变量不起作用:(您可以添加外部图像,因为它们是常量。从原始帖子中,您可以引用“PatientList.images.letter bg.png”,因为此文件是硬编译到程序集中的,因此始终存在。局部变量“TestVariable”的值仅在填充它的特定请求中可用。实际获取JavaScript文件内容的后续请求不再具有该变量。