加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 多个用户控件和JavaScript

发布时间:2020-12-15 20:55:11 所属栏目:asp.Net 来源:网络整理
导读:我在用户控件中包含一个JS文件.主机页面具有用户控件的多个实例. JS文件有一个全局变量,用作JS函数的标志.我需要将此变量的范围限制为用户控件.不幸的是,当我有多个控件实例时,会覆盖变量值. 在这样的情况下,推荐的方法是什么? 解决方法 我建议重构你的代码
我在用户控件中包含一个JS文件.主机页面具有用户控件的多个实例.

JS文件有一个全局变量,用作JS函数的标志.我需要将此变量的范围限制为用户控件.不幸的是,当我有多个控件实例时,会覆盖变量值.

在这样的情况下,推荐的方法是什么?

解决方法

我建议重构你的代码,使所有常见的JS逻辑存储在一个地方,而不是存储在每个UserControl中.这将大大减少页面大小.

您可以将UserControl的id传递给常用的JS方法,以区分UserControl.

对于限制’UserControl’变量范围的问题,您可以存储某种键/值结构以保持您的UserControl特定值 – Key将是UserControl clientID,并且值将是您的变量对此很感兴趣.

例如:

var UCFlags = new Object();
//set the flag for UserControl1:
UCFlags["UC1"] = true;
//set the flag for UserControl2:
UCFlags["UC2"] = false;

要访问它们,只需将UserControl的ClientID传递给UCFlags数组:

myFlag = UCFlags["UC1"];

在服务器端,您可以用常量字符串“UC1”或“UC2”替换

<%= this.ClientID %>

像这样:

myFlag = UCFlags["<%= this.ClientID %>"];

您仍然可以使用<%= this.ClientID%>这里的语法虽然JS的大部分都在一个单独的文件中;简单地说

UCFlags["<%= this.ClientID %>"] = value;

在调用嵌入JS文件之前.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读