【问题标题】:C# variable in .js file from embeded resource in server control ASP.NET来自服务器控件 ASP.NET 中嵌入式资源的 .js 文件中的 C# 变量
【发布时间】:2012-06-22 11:16:18
【问题描述】:

我正在构建我的 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%>");

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

【问题讨论】:

  • 它应该可以工作......除了明显的“你缺少分号”。如果您使用的是 VS(就像我一样),智能感知会显示变量。
  • 它可以工作,但不能在我嵌入的资源 javascript 文件中。只有当我的代码隐藏到我的 aspx 文件中有单独的 javascript 和 c# 变量时。但我想让服务器控制 .dll 文件包含所有内容。那里出现问题。这很奇怪,因为它可以与 内的 WebResource(...) 一起使用,但其他所有内容似乎都失败了。
  • 啊,我明白了。也许您应该从主页将值传递给您的 javascript 函数。
  • 如果觉得 WebResource 工作很奇怪,因为 DateTime.Now.ToString() 没有。

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


【解决方案1】:

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

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

会发生什么:

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

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

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

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

【讨论】:

  • 感谢您的回答。但是我有 javascript 文件作为我的服务器控件中的嵌入资源,当我想从我的控件中获取其他资源(如图像)时,我可以解析这个文件(如我的问题中所述)我只需将 PerformSubstitution = true 添加到我的 AssemblyInfo 中。 cs 文件。因此,当我可以在加载之前解析 .js 文件时,我不相信没有选项可以从 c# 代码中获取单个变量。但我只知道如何获取资源...变量不起作用:(
  • 您可以添加外部图像,因为它们是常量。从您的原始帖子中,您可以引用“PatientList.Images.letter-bg.png”,因为该文件很难编译到您的程序集中,因此始终存在。您的局部变量“TestVariable”的值仅在填充它的特定请求中可用。实际获取 JavaScript 文件内容的后续请求不再具有该变量。
猜你喜欢
  • 2011-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-02
  • 1970-01-01
  • 2017-11-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多