Javascript AJAX&;ASP.net,引用外部文件中的服务器控件
我在ASP.NET页面中有一些JavaScript,如下所示:Javascript AJAX&;ASP.net,引用外部文件中的服务器控件,javascript,ajax,asp.net-ajax,parameters,clientid,Javascript,Ajax,Asp.net Ajax,Parameters,Clientid,我在ASP.NET页面中有一些JavaScript,如下所示: var list = $get('<%=Topics.ClientID %>'); var list=$get(“”); 我现在编写了许多使用这种语法的函数,我想集中我的JavaScript并将其移动到一个外部JavaScript文件中。但是,这会中断,因为找不到“主题” 让这项工作发挥作用的最佳策略是什么?我假设我应该将控件/控件信息作为参数传递给函数,但我似乎无法使语法正常工作。有什么建议吗?您应该从UserCo
var list = $get('<%=Topics.ClientID %>');
var list=$get(“”);
我现在编写了许多使用这种语法的函数,我想集中我的JavaScript并将其移动到一个外部JavaScript文件中。但是,这会中断,因为找不到“主题”
让这项工作发挥作用的最佳策略是什么?我假设我应该将控件/控件信息作为参数传递给函数,但我似乎无法使语法正常工作。有什么建议吗?您应该从UserControl内部创建一个javascript方法,该方法返回客户端元素。然后在另一个页面/控件中,只需访问该方法 在用户控制中
<script language="javascript">
function GetTopics() {
return = $get('<%=Topics.ClientID %>');
}
</script>
函数GetTopics(){
return=$get(“”);
}
在其他页面/控件中
<script language="javascript">
var list = GetTopics();
</script>
var list=GetTopics();
编辑-您面临的问题是您需要Topics.ClientID,而它不存在。因此,弥合这一差距的唯一真正方法就是把它放在一个共同的地方。如果您真的不想这样做,您可以尝试使用其他一些标准来选择您的元素。如果您使用的是jQuery,那么可以用一类主题标记一个元素,然后用$(“.Topics”)查找它 如果您知道每页只有一个名为“Topics”的服务器控件,并且使用命名约定,则可以继承控件主题的任何内容(可能是HiddenField?您没有指定),并覆盖其ClientId getter以返回其服务器id,如下所示: 然后您可以在javascript文件中知道页面中将有一个id设置为“Topics”的隐藏字段,并直接使用该字段
根据您所在的领域/情况,这可能会为您节省大量时间,也可能会让您浪费大量时间。这是ASP.NET JS开发的常见问题。至于我,我每次都用同样的方法,看起来不错 我习惯于Javascript中的OOP,因此我的大多数JS外部文件如下所示:
function CouponManager()
{
}
在.aspx代码中,我执行以下操作:
<script language="javascript">
var couponManager = new CouponManager();
</script>
从.aspx代码中,我执行以下操作:
<script language="javascript">
var couponManager = new CouponManager
({
txtCouponNameId = '<%= txtCouponName.ClientID %>',
txtCouponDescriptionId = '<%= txtCouponDescription.ClientID %>'
});
</script>
var couponManager=新的couponManager
({
txtcooponnameid='',
TXTCoupondeDescriptionId=“”
});
这种方法允许我将JS与.aspx页面分开,并将所有服务器控件依赖项放在一个标记中。很抱歉,我没有说得更具体。我希望将JavaScript集中到外部JavaScript文件中,而不是用户控件中。我已经更新了问题。我认为你将无法完成你所追求的目标。您可以在基本用户控件类中通过button将我发布的解决方案自动化。如果上述操作不起作用,可以将其作为window.GetTopics=GetTopics扔到window对象上;
<script language="javascript">
var couponManager = new CouponManager
({
txtCouponNameId = '<%= txtCouponName.ClientID %>',
txtCouponDescriptionId = '<%= txtCouponDescription.ClientID %>'
});
</script>